- ممکن است هنوز تعدادی از فایلهای ts. شما کامپایل نشدهاند. یکبار از منوی Build گزینهی Clean solution را انتخاب کنید و بعد هم ReBuild از نو انجام شود. در اینحالت بررسی کنید که آیا تمام فایلهای js تولید شدهاند یا خیر (زیاد اتفاق میافتد).
- بهتر است از گوگلکروم استفاده کنید، چون developer tools آن این امکان را دارد که فایلها را کش نکند که برای حالت توسعه بسیار مفید است (فایلی را تغییر میدهید، کامپایل هم شدهاست، اما مرورگر نمونهی قدیمی کش شده را دریافت میکند و نه فایل جدید را (این هم زیاد اتفاق میافتد)):
- همچنین سه فایل آزمایش شدهی main.ts ، app.routes.ts و app.component.ts را با نمونههای خودتان تطابق دهید.
+ فقط پروژههای قدیمی و بدون پشتیبانی MVC 5 هستند که فایلهای جدید اضافه نشدهی به فایل csproj را به solution در IDE اضافه نمیکنند. چنین مشکلی با پروژههای جدید ASP.NET Core وجود ندارد و دقیقا مانند VSCode رفتار میکنند. یعنی هر فایلی که توسط Angular CLI اضافه شد، به صورت خودکار در IDE نمایش داده میشود (بدون نیاز به ذکر ارجاعی به آنها در فایل csproj). بنابراین یا از VSCode استفاده کنید، یا هربار در پروژههای با ساختار قدیمی MVC 5 باید این فایلهای جدید تولید شده را به فایل csproj به صورت دستی اضافه کنید (اگر میخواهید آنها را داخل VS ویرایش کنید).
- این مطلب را هم مدنظر داشته باشید:
«چه زمانی باید به فکر ارتقاء به ASP.NET Core بود؟»
If you’re starting a new project and plan on using MVC and/or Web API, then it’s almost certain you should use ASP.NET Core.
Gulp #4
به هنگام سازی مرورگر و بارگذاری مجدد به صورت خودکار
یکی از موارد فوق العاده تکراری در هنگام توسعهی وب، برای یک توسعه دهنده سمت کاربر (Front end Developer) ریلود کردن مرورگر است. همچنین تست وب سایت یا آپلود در موبایل و سایر داستگاهها، متداول است. با پلاگین گالپ میتوان این مشکل را به صورت بهینهای حل کرد.
نصب
npm install browser-sync gulp --save-dev
var gulp = require('gulp'), sass = require('gulp-ruby-sass'), notify = require('gulp-notify'), browserSync = require('browser-sync'), // Add browser syns plugin bower = require('gulp-bower');
gulp.task('browserSync', function() { browserSync({ server: { baseDir: './' //our server root } }); });
gulp.task('watch', [ 'css','browserSync'], function() { })
// Rerun the task when a file changes gulp.task('watch', ['html', 'css','browserSync'], function() { gulp.watch(config.sassPath + '/**/*.scss', ['css']); gulp.watch(config.htmlPath , ['html'] ) browserSync.watch("./*.html").on("change", browserSync.reload); // browserSync watch task });
.pipe(browserSync.reload({ stream: true }));
شخصی سازی بوت استرپ
@import "bootstrap"; @import "font-awesome";
@import "fonts-fa"; @import "variable"; @import "bootstrap"; @import "font-awesome"; @import "rtl.scss"; @import "typography";
- sudo npm install
- gulp
- gulp watch
مخزن گیت هاب : کامیت :
آزمون اطلاعات عمومی JavaScript
JS Is Weird
JavaScript is a great programming language, but thanks to the fact that its initial release was built in only ten days back in 1995, coupled with the fact that JS is backward-compatible, it's also a bit weird. It doesn't always behave the way you might think. In this quiz, you'll be shown 25 quirky expressions and will have to guess the output. Even if you're a JS developer, most of this syntax is probably, and hopefully, not something you use in your daily life.
.NET 7 minimal API from scratch | FULL COURSE | clean architecture, repository pattern, CQRS MediatR
In this course I want to provide you a project structure and code organization to get you started with real .NET 7 minimal API projects. It's a full course on this topic where I start from creating and explaining the project structure, setting up different layers using EF Core, repository pattern, CQRS and MediatR. The biggest part of the video is however around the .NET 7 minimal API, taking you from the initial setup, explaining route handlers, implementing all CRUD operations and so on. Last but not least, this course walks you through the process of refactoring the .NET 7 minimal API so that it becomes readable, maintainable and scalable. At the end, you'll have a full project structure organized according to modern architectural patterns that you can take as a template for your own projects.
Contents
1. Intro: 00:00
2. Structuring the solution: 01:00
3. Coding the domain layer: 05:25
4. Coding the data access layer: 08:22
5. Creating repositories: 11:17
6. Adding migrations and database update: 22:30
7. CQRS with MediatR: 29:07
8. Route and rout handlers: 52:06
9. Dependency injection: 55:52
10. Implementing GET by ID : 57:40
11. Implementing POST route: 01:00:26
12. Implementing GET all route: 01:03:41
13. Implement PUT and DELETE: 01:04:57
14. Testing with Postman: 01:09:01
15. Is there a problem? 01:12:41
16. Refactoring service registrations: 01:15:49
17. Refactoring route registrations: 01:20:01
18. Automatic registration of endpoints: 01:26:28
19. Introducing route groups: 01:31:43
20. Extract lambdas into instance methods: 01:34:31
21: Model validation with endpoint filters: 01:45:58
22. Global exception handling: 01:55:10
23. Conclusions: 01:59:49