مرورگر شما از این ویدیو پشتیبانی نمی کند.
نکته:
آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیوها:
(صرفا برای مشاهده نمونه ویدیو، ممکن هست نیاز به شکن داشته باشید.)
بارگزاری مجدد
توضیحات دوره:
با Nest، TypeORM، و Typescript APIهای باطن کامل را با سرعت باورنکردنی بسازید. شامل تست و استقرار! استقرار یک برنامه با ویژگی کامل برای تولید ساخت سیستمهای احراز هویت و مجوزها از ابتدا بنویسید یکپارچهسازی و آزمایشهای واحد برای اطمینان از کارکرد کد شما اعتبارسنجی خودکار دادههای همراه با درخواستهای دریافتی از یک کلاینت API برای آزمایش دستی برنامه خود استفاده از ساختار به کد خود با Typescript Make استفاده کنید. کد شما با تزریق وابستگی قابل استفاده مجدد و آزمایشپذیرتر است انواع مختلف دادهها را با روابط TypeORM به هم گره بزنید. درک پشت صحنه از NestJS استفاده از محافظها برای جلوگیری از دسترسی کاربران غیرمجاز به دادههای حساس درک چرخه درخواست-پاسخ ویژه Nest مدل برنامهتان داده ها با استفاده از موجودیت های TypeORM از دکوراتورها برای ساده سازی چشمگیر کد خود استفاده کنید پیش نیازها: درک پایه جاوا اسکریپت احراز هویت/مجوز؟ تحت پوشش. تست خودکار؟ بله، اینجاست! استقرار تولید؟ البته!
تبریک می گویم! شما راهنمای کاملی در مورد نحوه ساخت برنامههای آماده سازمانی با NestJS پیدا کردهاید.
NestJS یک چارچوب Backend است که برای ایجاد APIهای مقیاس پذیر و قابل اعتماد استفاده می شود. این یک چارچوب "شامل باتری" است. این شامل ابزارهایی برای رسیدگی به تقریباً همه موارد استفاده ممکن است، از ماندگاری داده، اعتبارسنجی، مدیریت پیکربندی، آزمایش، و بسیاری موارد دیگر. این دوره به شما کمک میکند در Nest تسلط پیدا کنید. تا زمانی که این دوره را کامل کنید، اعتماد به نفس ایجاد هر برنامه ای را که می توانید تصور کنید خواهید داشت.
در طول این دوره شما یک سری برنامه با پیچیدگی رو به رشد خواهید ساخت. ما تا حد امکان از کتابخانه ها و ابزارهای کمتری استفاده می کنیم. درعوض، سیستمهای سفارشی زیادی مینویسید تا بهتر بفهمید هر قطعه Nest چگونه با هم کار میکند. هر برنامهای که میسازید شامل بحث در مورد مدلسازی داده و تداوم است. ما ابتدا سوابق را در یک فروشگاه داده ساده مبتنی بر فایل (ساخته شده از ابتدا) ذخیره می کنیم و در نهایت به ذخیره داده ها در یک نمونه Postgres درجه تولید می پردازیم.
آزمایش یک موضوع اساسی در Nest است. مقدار زیادی از عملکرد در Nest برای اطمینان از آسان بودن آزمایش پروژه شما اختصاص داده شده است. این دوره از توصیههای تست Nest پیروی میکند و شما هم تستهای ادغام و هم واحد را مینویسید تا مطمئن شوید پروژهتان مطابق انتظار کار میکند. اگرچه آزمایش گاهی اوقات می تواند گیج کننده و خسته کننده باشد، اما من برای اطمینان از اینکه تست هایی که می نویسیم رسا، سریع و موثر هستند، دقت ویژه ای داشته ام. میتوانید از این دانش در پروژههای خود، حتی پروژههایی که از Nest استفاده نمیکنند، استفاده کنید!
تایپ اسکریپ در طول این دوره استفاده می شود تا مطمئن شویم که کد تمیز و صحیح می نویسیم. تایپ اسکریپت را نمی شناسید؟ مشکلی نیست! یک ضمیمه رایگان در پایان دوره گنجانده شده است تا شما را با سرعت تایپ اسکریپت آشنا کند. زمانی که با آن آشنا شدید، تایپ اسکریپت به شما کمک می کند تا حتی قبل از اجرای آن، خطاها و اشکالات موجود در کد خود را پیدا کنید. اگر قبلاً تایپ اسکریپت را استفاده نکردهاید، میخواهید از آن لذت ببرید :)
-------------------------------------
همه چیز در این دوره طراحی شده است تا فرآیند یادگیری شما را تا حد امکان آسان کند.
در هر مرحله، به شما یاد میدهم که Nest به صورت داخلی چه کاری انجام میدهد و به شما کمک میکنم تا نحوه پیچاندن و خم کردن Nest را برای مطابقت بهتر با نیازهای برنامهتان درک کنید.
هر ویدیوی دوره دارای یک فایل ZIP ضمیمه شده است که حاوی کدهای به روز است، فقط در صورت گیر کردن.
دستیاران آموزش تمام وقت آماده پاسخگویی به سوالات شما هستند
دسترسی به سرور چت زنده خصوصی گنجانده شده است. هر زمان که به کمک نیاز داشتید، به صورت زنده!
-------------------------------------
در اینجا فهرستی جزئی از موضوعات موجود در این دوره آمده است:
برنامه خود را به صورت ایمن در تولید مستقر کنید
یکپارچه سازی خودکار و تست های واحد را بنویسید تا مطمئن شوید کد شما کار می کند
یک سیستم احراز هویت از ابتدا برای ورود کاربران بسازید
به کاربران اجازه دهید تا اقدامات خاصی را با سیستم مجوز انجام دهند
داده ها را با پرس و جوهای پیچیده با استفاده از TypeORM
ذخیره و بازیابی کنید درک کنید که TypeORM چگونه روابط داده را مدیریت می کند
کد اعلانی را با استفاده از ویژگیها، روشها، و تزئینات پارامتر بنویسید
بر مفهوم تزریق وابستگی برای نوشتن کد قابل استفاده مجدد مسلط شوید
اجرای اعتبارسنجی خودکار درخواستهای دریافتی
دادههای پاسخ خروجی را با یک سیستم DTO سفارشی قالببندی کنید
رسیدگی به درخواستهای ورودی و پاسخهای خروجی با استفاده از گاردها و رهگیرها
کد خود را به ماژولهای Nest قابل استفاده مجدد تقسیم کنید
ساختار را با استفاده از مهاجرت ها به پایگاه داده خود اضافه کنید
برای یادگیری NestJS سختی داشتم. تعداد زیادی آموزش منسوخ در اطراف آن وجود دارد، اسناد گاهی اوقات نامشخص است و درک خود Nest به سادگی دشوار است. من این دوره را برای صرفه جویی در وقت و هزینه شما ایجاد کردم - دوره ای برای نشان دادن دقیقاً آنچه در مورد هر موضوعی در Nest باید بدانید. یادگیری Nest را تجربهای لذتبخش میبینید و در طول مسیر، دانش بسیار زیادی کسب خواهید کرد.
امروز ثبت نام کنید و در تسلط بر NestJS به من بپیوندید!
سرفصل ها و درس ها
از اینجا شروع کنید!
Get Started Here!
نحوه دریافت کمک
How to Get Help
به انجمن ما بپیوندید!
Join Our Community!
منابع دوره
Course Resources
از اینجا شروع کنید!
Get Started Here!
نحوه دریافت کمک
How to Get Help
به انجمن ما بپیوندید!
Join Our Community!
منابع دوره
Course Resources
مبانی Nest
The Basics of Nest
راه اندازی پروژه
Project Setup
پیکربندی TypeScript
TypeScript Configuration
ایجاد یک کنترلر
Creating a Controller
راهاندازی یک برنامه Nest
Starting Up a Nest App
قراردادهای نامگذاری فایل
File Naming Conventions
دکوراتورهای مسیریابی
Routing Decorators
مبانی Nest
The Basics of Nest
راه اندازی پروژه
Project Setup
پیکربندی TypeScript
TypeScript Configuration
ایجاد یک کنترلر
Creating a Controller
راهاندازی یک برنامه Nest
Starting Up a Nest App
قراردادهای نامگذاری فایل
File Naming Conventions
دکوراتورهای مسیریابی
Routing Decorators
ایجاد پروژه ها با Nest CLI
Generating Projects with the Nest CLI
راه اندازی برنامه
App Setup
استفاده از Nest CLI برای تولید فایلها
Using the Nest CLI to Generate Files
اطلاعات بیشتر در مورد تولید فایل ها
More on Generating Files
اضافه کردن منطق مسیریابی
Adding Routing Logic
[اختیاری] راه اندازی پستچی
[Optional] Postman Setup
[اختیاری] برنامه افزودنی مشتری REST VSCode
[Optional] VSCode REST Client Extension
ایجاد پروژه ها با Nest CLI
Generating Projects with the Nest CLI
راه اندازی برنامه
App Setup
استفاده از Nest CLI برای تولید فایلها
Using the Nest CLI to Generate Files
اطلاعات بیشتر در مورد تولید فایل ها
More on Generating Files
اضافه کردن منطق مسیریابی
Adding Routing Logic
[اختیاری] راه اندازی پستچی
[Optional] Postman Setup
[اختیاری] برنامه افزودنی مشتری REST VSCode
[Optional] VSCode REST Client Extension
اعتبارسنجی داده های درخواستی با لوله ها
Validating Request Data with Pipes
دسترسی به داده های درخواستی با دکوراتورها
Accessing Request Data with Decorators
استفاده از لوله ها برای اعتبارسنجی
Using Pipes for Validation
افزودن قوانین اعتبارسنجی
Adding Validation Rules
پشت صحنه اعتبارسنجی
Behind the Scenes of Validation
نحوه نگهداری اطلاعات نوع
How Type Info is Preserved
اعتبارسنجی داده های درخواستی با لوله ها
Validating Request Data with Pipes
دسترسی به داده های درخواستی با دکوراتورها
Accessing Request Data with Decorators
استفاده از لوله ها برای اعتبارسنجی
Using Pipes for Validation
افزودن قوانین اعتبارسنجی
Adding Validation Rules
پشت صحنه اعتبارسنجی
Behind the Scenes of Validation
نحوه نگهداری اطلاعات نوع
How Type Info is Preserved
Nest Architecture: Services and Repositories
Nest Architecture: Services and Repositories
خدمات و مخازن
Services and Repositories
پیاده سازی یک مخزن
Implementing a Repository
خواندن و نوشتن در یک فایل ذخیره سازی
Reading and Writing to a Storage File
پیاده سازی یک سرویس
Implementing a Service
تست دستی کنترلر
Manual Testing of the Controller
گزارش خطاها با استثنائات
Reporting Errors with Exceptions
درک وارونگی کنترل
Understanding Inversion of Control
مقدمه ای بر تزریق وابستگی
Introduction to Dependency Injection
Refactoring برای استفاده از تزریق وابستگی
Refactoring to Use Dependency Injection
چند یادداشت بیشتر در مورد DI
Few More Notes on DI
Nest Architecture: Services and Repositories
Nest Architecture: Services and Repositories
خدمات و مخازن
Services and Repositories
پیاده سازی یک مخزن
Implementing a Repository
خواندن و نوشتن در یک فایل ذخیره سازی
Reading and Writing to a Storage File
پیاده سازی یک سرویس
Implementing a Service
تست دستی کنترلر
Manual Testing of the Controller
گزارش خطاها با استثنائات
Reporting Errors with Exceptions
درک وارونگی کنترل
Understanding Inversion of Control
مقدمه ای بر تزریق وابستگی
Introduction to Dependency Injection
Refactoring برای استفاده از تزریق وابستگی
Refactoring to Use Dependency Injection
چند یادداشت بیشتر در مورد DI
Few More Notes on DI
Nest Architecture: سازماندهی کد با ماژول ها
Nest Architecture: Organizing Code with Modules
بررسی اجمالی پروژه
Project Overview
تولید چند فایل
Generating a Few Files
تنظیم DI بین ماژول ها
Setting Up DI Between Modules
اطلاعات بیشتر در مورد DI Between Modules
More on DI Between Modules
مصرف چند ماژول
Consuming Multiple Modules
جمع بندی ماژول ها
Modules Wrapup
Nest Architecture: سازماندهی کد با ماژول ها
Nest Architecture: Organizing Code with Modules
بررسی اجمالی پروژه
Project Overview
تولید چند فایل
Generating a Few Files
تنظیم DI بین ماژول ها
Setting Up DI Between Modules
اطلاعات بیشتر در مورد DI Between Modules
More on DI Between Modules
مصرف چند ماژول
Consuming Multiple Modules
جمع بندی ماژول ها
Modules Wrapup
زمان پروژه بزرگ!
Big Project Time!
نمای کلی برنامه
App Overview
طراحی API
API Design
طراحی ماژول!
Module Design!
تولید ماژول ها، کنترلرها و خدمات
Generating Modules, Controllers, and Services
زمان پروژه بزرگ!
Big Project Time!
نمای کلی برنامه
App Overview
طراحی API
API Design
طراحی ماژول!
Module Design!
تولید ماژول ها، کنترلرها و خدمات
Generating Modules, Controllers, and Services
داده های ماندگار با TypeORM
Persisting Data with TypeORM
دادههای پایدار با Nest
Persistent Data with Nest
راه اندازی اتصال پایگاه داده
Setting Up a Database Connection
ایجاد موجودیت و مخزن
Creating an Entity and Repository
مشاهده محتویات یک بانک اطلاعاتی
Viewing a DB's Contents
آشنایی با دکوراتورهای TypeORM
Understanding TypeORM Decorators
یک یادداشت سریع در مورد مخازن
One Quick Note on Repositories
چند مسیر اضافی
A Few Extra Routes
تنظیم اعتبار سنجی بدنه
Setting Up Body Validation
تست مسیر دستی
Manual Route Testing
داده های ماندگار با TypeORM
Persisting Data with TypeORM
دادههای پایدار با Nest
Persistent Data with Nest
راه اندازی اتصال پایگاه داده
Setting Up a Database Connection
ایجاد موجودیت و مخزن
Creating an Entity and Repository
مشاهده محتویات یک بانک اطلاعاتی
Viewing a DB's Contents
آشنایی با دکوراتورهای TypeORM
Understanding TypeORM Decorators
یک یادداشت سریع در مورد مخازن
One Quick Note on Repositories
چند مسیر اضافی
A Few Extra Routes
تنظیم اعتبار سنجی بدنه
Setting Up Body Validation
تست مسیر دستی
Manual Route Testing
ایجاد و ذخیره داده های کاربر
Creating and Saving User Data
ایجاد و ذخیره یک کاربر
Creating and Saving a User
تنفس سریع و بررسی
Quick Breather and Review
اطلاعات بیشتر در مورد ایجاد در مقابل ذخیره
More on Create vs Save
به روز رسانی مورد نیاز برای روش های find and findOne
Required Update for find and findOne Methods
پرس و جو برای داده ها
Querying for Data
به روز رسانی داده ها
Updating Data
حذف کاربران
Removing Users
یافتن و فیلتر کردن سوابق
Finding and Filtering Records
حذف رکوردها
Removing Records
به روز رسانی سوابق
Updating Records
چند نکته در مورد استثناها
A Few Notes on Exceptions
ایجاد و ذخیره داده های کاربر
Creating and Saving User Data
ایجاد و ذخیره یک کاربر
Creating and Saving a User
تنفس سریع و بررسی
Quick Breather and Review
اطلاعات بیشتر در مورد ایجاد در مقابل ذخیره
More on Create vs Save
به روز رسانی مورد نیاز برای روش های find and findOne
Required Update for find and findOne Methods
پرس و جو برای داده ها
Querying for Data
به روز رسانی داده ها
Updating Data
حذف کاربران
Removing Users
یافتن و فیلتر کردن سوابق
Finding and Filtering Records
حذف رکوردها
Removing Records
به روز رسانی سوابق
Updating Records
چند نکته در مورد استثناها
A Few Notes on Exceptions
سریال سازی داده های سفارشی
Custom Data Serialization
به استثنای ویژگی های پاسخ
Excluding Response Properties
راه حل سریال سازی
Solution to Serialization
نحوه ساخت رهگیرها
How to Build Interceptors
سریال سازی در رهگیر
Serialization in the Interceptor
سفارشی کردن DTO رهگیر
Customizing the Interceptor's DTO
پیچیدن رهگیر در دکوراتور
Wrapping the Interceptor in a Decorator
سریال سازی گسترده کنترلر
Controller-Wide Serialization
کمی از نوع ایمنی در مورد سریال
A Bit of Type Safety Around Serialize
سریال سازی داده های سفارشی
Custom Data Serialization
به استثنای ویژگی های پاسخ
Excluding Response Properties
راه حل سریال سازی
Solution to Serialization
نحوه ساخت رهگیرها
How to Build Interceptors
سریال سازی در رهگیر
Serialization in the Interceptor
سفارشی کردن DTO رهگیر
Customizing the Interceptor's DTO
پیچیدن رهگیر در دکوراتور
Wrapping the Interceptor in a Decorator
سریال سازی گسترده کنترلر
Controller-Wide Serialization
کمی از نوع ایمنی در مورد سریال
A Bit of Type Safety Around Serialize
احراز هویت از ابتدا
Authentication From Scratch
بررسی اجمالی احراز هویت
Authentication Overview
یادآوری در راه اندازی سرویس
Reminder on Service Setup
پیاده سازی قابلیت ثبت نام
Implementing Signup Functionality
[اختیاری] درک درهم سازی رمز عبور
[Optional] Understanding Password Hashing
نمک زدن و هش کردن رمز عبور
Salting and Hashing the Password
ایجاد کاربر
Creating a User
مدیریت ورود کاربر
Handling User Sign In
راه اندازی Sessions
Setting up Sessions
تغییر و واکشی داده های جلسه
Changing and Fetching Session Data
ورود به سیستم کاربر
Signing in a User
دریافت کاربر فعلی
Getting the Current User
خروج از سیستم کاربر
Signing Out a User
دو ابزار اتوماسیون
Two Automation Tools
دکوراتورهای پارام سفارشی
Custom Param Decorators
چرا دکوراتور و رهگیر
Why a Decorator and Interceptor
ارتباط از رهگیر به دکوراتور
Communicating from Interceptor to Decorator
اصلاح کوچک برای CurrentUserInterceptor
Small Fix for CurrentUserInterceptor
اتصال یک رهگیر به تزریق وابستگی
Connecting an Interceptor to Dependency Injection
رهگیرهای جهانی
Globally Scoped Interceptors
جلوگیری از دسترسی با گاردهای احراز هویت
Preventing Access with Authentication Guards
احراز هویت از ابتدا
Authentication From Scratch
بررسی اجمالی احراز هویت
Authentication Overview
یادآوری در راه اندازی سرویس
Reminder on Service Setup
پیاده سازی قابلیت ثبت نام
Implementing Signup Functionality
[اختیاری] درک درهم سازی رمز عبور
[Optional] Understanding Password Hashing
نمک زدن و هش کردن رمز عبور
Salting and Hashing the Password
ایجاد کاربر
Creating a User
مدیریت ورود کاربر
Handling User Sign In
راه اندازی Sessions
Setting up Sessions
تغییر و واکشی داده های جلسه
Changing and Fetching Session Data
ورود به سیستم کاربر
Signing in a User
دریافت کاربر فعلی
Getting the Current User
خروج از سیستم کاربر
Signing Out a User
دو ابزار اتوماسیون
Two Automation Tools
دکوراتورهای پارام سفارشی
Custom Param Decorators
چرا دکوراتور و رهگیر
Why a Decorator and Interceptor
ارتباط از رهگیر به دکوراتور
Communicating from Interceptor to Decorator
اصلاح کوچک برای CurrentUserInterceptor
Small Fix for CurrentUserInterceptor
اتصال یک رهگیر به تزریق وابستگی
Connecting an Interceptor to Dependency Injection
رهگیرهای جهانی
Globally Scoped Interceptors
جلوگیری از دسترسی با گاردهای احراز هویت
Preventing Access with Authentication Guards
شروع با تست واحد
Getting Started with Unit Testing
بررسی اجمالی تست
Testing Overview
تنظیم تست
Testing Setup
بله، آزمایش گیج کننده است
Yes, Testing is Confusing
دریافت تایپ اسکریپت برای کمک به ساختگی ها
Getting TypeScript to Help With Mocks
یادداشت سریع برای کمک به سرعت بخشیدن به تست های شما
Quick Note to Help Speed Up Your Tests
بهبود طرح بندی فایل
Improving File Layout
اطمینان از هش شدن رمز عبور
Ensuring Password Gets Hashed
تست Refactor 'Email in Use' برای رسیدگی به تغییرات Jest Breaking
Refactor 'Email in Use' Test to Address Jest Breaking Changes
تغییر پیاده سازی های ساختگی
Changing Mock Implementations
تست Refactor 'Email Unused' برای رسیدگی به تغییرات Jest Breaking
Refactor 'Unused Email' Test to Address Jest Breaking Changes
تست جریان ورود
Testing the Signin Flow
تست Refactor 'رمز عبور نامعتبر' برای رسیدگی به تغییرات جست و خیز
Refactor 'Invalid Password' Test to Address Jest Breaking Changes
بررسی مقایسه رمز عبور
Checking Password Comparison
تمسخرهای هوشمند بیشتر
More Intelligent Mocks
Refactor 3 برای رسیدگی به تغییرات Jest Breaking Mocks
Refactor 3 Mocks to Address Jest Breaking Changes
Refactoring برای استفاده از مدلهای هوشمند
Refactoring to Use Intelligent Mocks
واحد تست یک کنترلر
Unit Testing a Controller
پیاده سازی های ساختگی بیشتر
More Mock Implementations
تست Refactor 'User id یافت نشد' برای آدرس دادن به تغییرات Jest Breaking
Refactor 'User id is not found' Test to Address Jest Breaking Changes
تست های فوق العاده موثر نیست
Not Super Effective Tests
تست روش ورود
Testing the Signin Method
شروع با تست واحد
Getting Started with Unit Testing
بررسی اجمالی تست
Testing Overview
تنظیم تست
Testing Setup
بله، آزمایش گیج کننده است
Yes, Testing is Confusing
دریافت تایپ اسکریپت برای کمک به ساختگی ها
Getting TypeScript to Help With Mocks
یادداشت سریع برای کمک به سرعت بخشیدن به تست های شما
Quick Note to Help Speed Up Your Tests
بهبود طرح بندی فایل
Improving File Layout
اطمینان از هش شدن رمز عبور
Ensuring Password Gets Hashed
تست Refactor 'Email in Use' برای رسیدگی به تغییرات Jest Breaking
Refactor 'Email in Use' Test to Address Jest Breaking Changes
تغییر پیاده سازی های ساختگی
Changing Mock Implementations
تست Refactor 'Email Unused' برای رسیدگی به تغییرات Jest Breaking
Refactor 'Unused Email' Test to Address Jest Breaking Changes
تست جریان ورود
Testing the Signin Flow
تست Refactor 'رمز عبور نامعتبر' برای رسیدگی به تغییرات جست و خیز
Refactor 'Invalid Password' Test to Address Jest Breaking Changes
بررسی مقایسه رمز عبور
Checking Password Comparison
تمسخرهای هوشمند بیشتر
More Intelligent Mocks
Refactor 3 برای رسیدگی به تغییرات Jest Breaking Mocks
Refactor 3 Mocks to Address Jest Breaking Changes
Refactoring برای استفاده از مدلهای هوشمند
Refactoring to Use Intelligent Mocks
واحد تست یک کنترلر
Unit Testing a Controller
پیاده سازی های ساختگی بیشتر
More Mock Implementations
تست Refactor 'User id یافت نشد' برای آدرس دادن به تغییرات Jest Breaking
Refactor 'User id is not found' Test to Address Jest Breaking Changes
تست های فوق العاده موثر نیست
Not Super Effective Tests
تست روش ورود
Testing the Signin Method
تست یکپارچه سازی
Integration Testing
شروع با تست پایان به پایان
Getting Started with End to End Testing
ایجاد یک آزمون پایان به پایان
Creating an End to End Test
مشکلات راه اندازی برنامه در فایل های مشخصات
App Setup Issues in Spec Files
استفاده از لوله با محدوده جهانی
Applying a Globally Scoped Pipe
استفاده از یک میان افزار با دامنه جهانی
Applying a Globally Scoped Middleware
حل ناکامی ها در حول و حوش تکرار تست
Solving Failures Around Repeat Test Runs
ایجاد پایگاه های داده تست و توسعه مجزا
Creating Separate Test and Dev Databases
تست یکپارچه سازی
Integration Testing
شروع با تست پایان به پایان
Getting Started with End to End Testing
ایجاد یک آزمون پایان به پایان
Creating an End to End Test
مشکلات راه اندازی برنامه در فایل های مشخصات
App Setup Issues in Spec Files
استفاده از لوله با محدوده جهانی
Applying a Globally Scoped Pipe
استفاده از یک میان افزار با دامنه جهانی
Applying a Globally Scoped Middleware
حل ناکامی ها در حول و حوش تکرار تست
Solving Failures Around Repeat Test Runs
ایجاد پایگاه های داده تست و توسعه مجزا
Creating Separate Test and Dev Databases
مدیریت پیکربندی برنامه
Managing App Configuration
درک Dotenv
Understanding Dotenv
استفاده از Dotenv برای Config
Applying Dotenv for Config
تعیین محیط زمان اجرا
Specifying the Runtime Environment
حل یک خطای SQLite
Solving a SQLite Error
کار می کند!
It Works!
یک تست پیگیری
A Followup Test
مدیریت پیکربندی برنامه
Managing App Configuration
درک Dotenv
Understanding Dotenv
استفاده از Dotenv برای Config
Applying Dotenv for Config
تعیین محیط زمان اجرا
Specifying the Runtime Environment
حل یک خطای SQLite
Solving a SQLite Error
کار می کند!
It Works!
یک تست پیگیری
A Followup Test
روابط با TypeORM
Relations with TypeORM
بازگشت به گزارش ها
Back to Reports
افزودن ویژگی ها به گزارش ها
Adding Properties to Reports
DTO برای ایجاد گزارش
A DTO for Report Creation
دریافت درخواست های ایجاد گزارش
Receiving Report Creation Requests
ذخیره گزارش با سرویس گزارش
Saving a Report with the Reports Service
ایجاد گزارش تست
Testing Report Creation
انجمن های ساختمانی
Building Associations
انواع انجمن ها
Types of Associations
دکوراتورهای ManyToOne و OneToMany
The ManyToOne and OneToMany Decorators
نکته مهم در مورد حذف پایگاه داده - رد نشوید
Important Note About Deleting Database - Do Not Skip
اطلاعات بیشتر در مورد دکوراتورها
More on Decorators
راه اندازی انجمن
Setting up the Association
قالب بندی پاسخ گزارش
Formatting the Report Response
تبدیل خواص با DTO
Transforming Properties with a DTO
روابط با TypeORM
Relations with TypeORM
بازگشت به گزارش ها
Back to Reports
افزودن ویژگی ها به گزارش ها
Adding Properties to Reports
DTO برای ایجاد گزارش
A DTO for Report Creation
دریافت درخواست های ایجاد گزارش
Receiving Report Creation Requests
ذخیره گزارش با سرویس گزارش
Saving a Report with the Reports Service
ایجاد گزارش تست
Testing Report Creation
انجمن های ساختمانی
Building Associations
انواع انجمن ها
Types of Associations
دکوراتورهای ManyToOne و OneToMany
The ManyToOne and OneToMany Decorators
نکته مهم در مورد حذف پایگاه داده - رد نشوید
Important Note About Deleting Database - Do Not Skip
اطلاعات بیشتر در مورد دکوراتورها
More on Decorators
راه اندازی انجمن
Setting up the Association
قالب بندی پاسخ گزارش
Formatting the Report Response
تبدیل خواص با DTO
Transforming Properties with a DTO
یک سیستم مجوزهای پایه
A Basic Permissions System
افزودن در تأیید گزارش
Adding in Report Approval
به روز رسانی مورد نیاز برای تغییر روش تایید
Required Update for changeApproval Method
تایید گزارش تست
Testing Report Approval
مجوز در مقابل احراز هویت
Authorization vs Authentication
اضافه کردن یک محافظ مجوز
Adding an Authorization Guard
گارد کار نمی کند؟!
The Guard Doesn't Work?!
میان افزارها، نگهبانان و رهگیرها
Middlewares, Guards, and Interceptors
تخصیص CurrentUser با Middleware
Assigning CurrentUser with a Middleware
رفع خطای تعریف نوع
Fixing a Type Definition Error
اعتبارسنجی مقادیر رشته کوئری
Validating Query String Values
تبدیل داده های رشته کوئری
Transforming Query String Data
چگونه یک برآورد ایجاد خواهیم کرد
How Will We Generate an Estimate
یک سیستم مجوزهای پایه
A Basic Permissions System
افزودن در تأیید گزارش
Adding in Report Approval
به روز رسانی مورد نیاز برای تغییر روش تایید
Required Update for changeApproval Method
تایید گزارش تست
Testing Report Approval
مجوز در مقابل احراز هویت
Authorization vs Authentication
اضافه کردن یک محافظ مجوز
Adding an Authorization Guard
گارد کار نمی کند؟!
The Guard Doesn't Work?!
میان افزارها، نگهبانان و رهگیرها
Middlewares, Guards, and Interceptors
تخصیص CurrentUser با Middleware
Assigning CurrentUser with a Middleware
رفع خطای تعریف نوع
Fixing a Type Definition Error
اعتبارسنجی مقادیر رشته کوئری
Validating Query String Values
تبدیل داده های رشته کوئری
Transforming Query String Data
چگونه یک برآورد ایجاد خواهیم کرد
How Will We Generate an Estimate
Query Builders با TypeORM
Query Builders with TypeORM
ایجاد Query Builder
Creating a Query Builder
نوشتن یک پرس و جو برای تولید برآورد
Writing a Query to Produce the Estimate
تست منطق تخمین
Testing the Estimate Logic
Query Builders با TypeORM
Query Builders with TypeORM
ایجاد Query Builder
Creating a Query Builder
نوشتن یک پرس و جو برای تولید برآورد
Writing a Query to Produce the Estimate
تست منطق تخمین
Testing the Estimate Logic
استقرار تولید
Production Deployment
مسیر تولید
The Path to Production
ارائه کلید کوکی
Providing the Cookie Key
درک پرچم همگام سازی
Understanding the Synchronize Flag
خطرات همگام سازی
The Dangers of Synchronize
نظریه پشت مهاجرت
The Theory Behind Migrations
سردرد با مدیریت پیکربندی
Headaches with Config Management
TypeORM و Nest Config عالی هستند
TypeORM and Nest Config is Great
پیکربندی پایگاه داده ویژه Env
Env-Specific Database Config
نصب TypeORM CLI
Installing the TypeORM CLI
ایجاد و اجرای مهاجرت
Generating and Running Migrations
به روز رسانی مهاجرت مورد نیاز برای تولید
Required Migration Update for Production
اجرای مهاجرت در طول آزمایشات E2E
Running Migrations During E2E Tests
پیکربندی DB تولید
Production DB Config
دستورالعمل های راه اندازی Heroku CLI
Heroku CLI Setup Instructions
پیکربندی پروژه خاص Heroku
Heroku Specific Project Config
استقرار برنامه - (سخنرانی پایانی)
Deploying the App - (Final Lecture)
استقرار تولید
Production Deployment
مسیر تولید
The Path to Production
ارائه کلید کوکی
Providing the Cookie Key
درک پرچم همگام سازی
Understanding the Synchronize Flag
خطرات همگام سازی
The Dangers of Synchronize
نظریه پشت مهاجرت
The Theory Behind Migrations
سردرد با مدیریت پیکربندی
Headaches with Config Management
TypeORM و Nest Config عالی هستند
TypeORM and Nest Config is Great
پیکربندی پایگاه داده ویژه Env
Env-Specific Database Config
نصب TypeORM CLI
Installing the TypeORM CLI
ایجاد و اجرای مهاجرت
Generating and Running Migrations
به روز رسانی مهاجرت مورد نیاز برای تولید
Required Migration Update for Production
اجرای مهاجرت در طول آزمایشات E2E
Running Migrations During E2E Tests
پیکربندی DB تولید
Production DB Config
دستورالعمل های راه اندازی Heroku CLI
Heroku CLI Setup Instructions
پیکربندی پروژه خاص Heroku
Heroku Specific Project Config
استقرار برنامه - (سخنرانی پایانی)
Deploying the App - (Final Lecture)
[پاداش] پیوست: TypeScript
[Bonus] Appendix: TypeScript
نحوه دریافت کمک
How to Get Help
نمای کلی TypeScript
TypeScript Overview
راه اندازی محیط
Environment Setup
اطلاعات مهم نسخه Axios
Important Axios Version Information
اولین برنامه
A First App
اجرای کد TypeScript
Executing TypeScript Code
یک تغییر سریع
One Quick Change
گرفتن خطاها با TypeScript
Catching Errors with TypeScript
گرفتن خطاهای بیشتر!
Catching More Errors!
بررسی اجمالی دوره
Course Overview
انواع
Types
بیشتر در مورد انواع
More on Types
نمونه هایی از انواع
Examples of Types
کجا از انواع استفاده می کنیم؟
Where Do We Use Types?
Annotations and Inference را تایپ کنید
Type Annotations and Inference
حاشیه نویسی با متغیرها
Annotations with Variables
حاشیه نویسی های تحت اللفظی شی
Object Literal Annotations
حاشیه نویسی در اطراف توابع
Annotations Around Functions
درک استنتاج
Understanding Inference
هر نوع
The Any Type
تعمیر نوع "Any".
Fixing the "Any" Type
اولیه سازی با تاخیر
Delayed Initialization
وقتی استنباط کار نمی کند
When Inference Doesn't Work
حاشیه نویسی های بیشتر در مورد توابع
More Annotations Around Functions
استنتاج پیرامون توابع
Inference Around Functions
حاشیه نویسی برای توابع ناشناس
Annotations for Anonymous Functions
باطل و هرگز
Void and Never
تخریب ساختار با حاشیه نویسی
Destructuring with Annotations
حاشیه نویسی در اطراف اشیاء
Annotations Around Objects
آرایه ها در TypeScript
Arrays in TypeScript
چرا آرایه های تایپ شده؟
Why Typed Arrays?
انواع متعدد در آرایه ها
Multiple Types in Arrays
زمان استفاده از آرایه های تایپ شده
When to Use Typed Arrays
تاپل ها در TypeScript
Tuples in TypeScript
تاپل ها در عمل
Tuples in Action
چرا تاپل ها؟
Why Tuples?
رابط ها
Interfaces
حاشیه نویسی های نوع طولانی
Long Type Annotations
رفع حاشیه نویسی با رابط ها
Fixing Annotations with Interfaces
نحو در اطراف رابط ها
Syntax Around Interfaces
توابع در رابط ها
Functions In Interfaces
استفاده مجدد از کد با رابط ها
Code Reuse with Interfaces
طرح کلی با رابط ها
General Plan with Interfaces
کلاس ها
Classes
ارث اساسی
Basic Inheritance
اصلاح کننده های روش کلاس
Class Method Modifiers
فیلدها در کلاس ها
Fields in Classes
فیلدهای دارای ارث
Fields with Inheritance
محل استفاده از کلاس ها
Where to Use Classes
دستورالعمل بسته به روز شد
Updated Parcel Instructions
نمای کلی برنامه
App Overview
بسته بندی با بسته
Bundling with Parcel
ساختار پروژه
Project Structure
اطلاعات مهم درباره نصب Faker
IMPORTANT Info About Faker Installation
تولید داده های تصادفی
Generating Random Data
فایل های تعریف را تایپ کنید
Type Definition Files
استفاده از نوع فایل های تعریف
Using Type Definition Files
صدور بیانیه ها در TypeScript
Export Statements in TypeScript
تعریف شرکت
Defining a Company
نکته مهم درباره کلید Google Maps
Important Note About Google Maps Key
افزودن پشتیبانی Google Maps
Adding Google Maps Support
بهروزرسانی مورد نیاز برای کتابخانه جدید @types
Required Update for New @types Library
ادغام نقشه های گوگل با TypeScript
Google Maps Integration with TypeScript
کاوش در فایل های تعریف نوع
Exploring Type Definition Files
قابلیت پنهان کردن
Hiding Functionality
چرا از اصلاح کننده های خصوصی استفاده کنیم؟ در اینجا چرا
Why Use Private Modifiers? Here's Why
اضافه کردن نشانگرها
Adding Markers
کد تکراری
Duplicate Code
یک راه حل ممکن
One Possible Solution
محدود کردن دسترسی با رابط ها
Restricting Access with Interfaces
بررسی نوع ضمنی
Implicit Type Checks
نمایش پنجره های پاپ آپ
Showing Popup Windows
به روز رسانی تعاریف رابط
Updating Interface Definitions
بندهای اجرایی اختیاری
Optional Implements Clauses
جمع بندی برنامه
App Wrapup
[پاداش] پیوست: TypeScript
[Bonus] Appendix: TypeScript
نحوه دریافت کمک
How to Get Help
نمای کلی TypeScript
TypeScript Overview
راه اندازی محیط
Environment Setup
اطلاعات مهم نسخه Axios
Important Axios Version Information
اولین برنامه
A First App
اجرای کد TypeScript
Executing TypeScript Code
یک تغییر سریع
One Quick Change
گرفتن خطاها با TypeScript
Catching Errors with TypeScript
گرفتن خطاهای بیشتر!
Catching More Errors!
بررسی اجمالی دوره
Course Overview
انواع
Types
بیشتر در مورد انواع
More on Types
نمونه هایی از انواع
Examples of Types
کجا از انواع استفاده می کنیم؟
Where Do We Use Types?
Annotations and Inference را تایپ کنید
Type Annotations and Inference
حاشیه نویسی با متغیرها
Annotations with Variables
حاشیه نویسی های تحت اللفظی شی
Object Literal Annotations
حاشیه نویسی در اطراف توابع
Annotations Around Functions
درک استنتاج
Understanding Inference
هر نوع
The Any Type
تعمیر نوع "Any".
Fixing the "Any" Type
اولیه سازی با تاخیر
Delayed Initialization
وقتی استنباط کار نمی کند
When Inference Doesn't Work
حاشیه نویسی های بیشتر در مورد توابع
More Annotations Around Functions
استنتاج پیرامون توابع
Inference Around Functions
حاشیه نویسی برای توابع ناشناس
Annotations for Anonymous Functions
باطل و هرگز
Void and Never
تخریب ساختار با حاشیه نویسی
Destructuring with Annotations
حاشیه نویسی در اطراف اشیاء
Annotations Around Objects
آرایه ها در TypeScript
Arrays in TypeScript
چرا آرایه های تایپ شده؟
Why Typed Arrays?
انواع متعدد در آرایه ها
Multiple Types in Arrays
زمان استفاده از آرایه های تایپ شده
When to Use Typed Arrays
تاپل ها در TypeScript
Tuples in TypeScript
تاپل ها در عمل
Tuples in Action
چرا تاپل ها؟
Why Tuples?
رابط ها
Interfaces
حاشیه نویسی های نوع طولانی
Long Type Annotations
رفع حاشیه نویسی با رابط ها
Fixing Annotations with Interfaces
نحو در اطراف رابط ها
Syntax Around Interfaces
توابع در رابط ها
Functions In Interfaces
استفاده مجدد از کد با رابط ها
Code Reuse with Interfaces
طرح کلی با رابط ها
General Plan with Interfaces
کلاس ها
Classes
ارث اساسی
Basic Inheritance
اصلاح کننده های روش کلاس
Class Method Modifiers
فیلدها در کلاس ها
Fields in Classes
فیلدهای دارای ارث
Fields with Inheritance
محل استفاده از کلاس ها
Where to Use Classes
دستورالعمل بسته به روز شد
Updated Parcel Instructions
نمای کلی برنامه
App Overview
بسته بندی با بسته
Bundling with Parcel
ساختار پروژه
Project Structure
اطلاعات مهم درباره نصب Faker
IMPORTANT Info About Faker Installation
تولید داده های تصادفی
Generating Random Data
فایل های تعریف را تایپ کنید
Type Definition Files
استفاده از نوع فایل های تعریف
Using Type Definition Files
صدور بیانیه ها در TypeScript
Export Statements in TypeScript
تعریف شرکت
Defining a Company
نکته مهم درباره کلید Google Maps
Important Note About Google Maps Key
افزودن پشتیبانی Google Maps
Adding Google Maps Support
بهروزرسانی مورد نیاز برای کتابخانه جدید @types
Required Update for New @types Library
ادغام نقشه های گوگل با TypeScript
Google Maps Integration with TypeScript
کاوش در فایل های تعریف نوع
Exploring Type Definition Files
قابلیت پنهان کردن
Hiding Functionality
چرا از اصلاح کننده های خصوصی استفاده کنیم؟ در اینجا چرا
Why Use Private Modifiers? Here's Why
اضافه کردن نشانگرها
Adding Markers
کد تکراری
Duplicate Code
یک راه حل ممکن
One Possible Solution
محدود کردن دسترسی با رابط ها
Restricting Access with Interfaces
بررسی نوع ضمنی
Implicit Type Checks
نمایش پنجره های پاپ آپ
Showing Popup Windows
به روز رسانی تعاریف رابط
Updating Interface Definitions
بندهای اجرایی اختیاری
Optional Implements Clauses
جمع بندی برنامه
App Wrapup
جایزه!
Bonus!
جایزه!
Bonus!
نمایش نظرات