آموزش NestJS: راهنمای کامل توسعه دهندگان

NestJS: The Complete Developer's Guide

نکته: آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیوها:
توضیحات دوره: با 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!

جایزه! Bonus!

  • جایزه! Bonus!

نمایش نظرات

Udemy (یودمی)

یودمی یکی از بزرگ‌ترین پلتفرم‌های آموزشی آنلاین است که به میلیون‌ها کاربر در سراسر جهان امکان دسترسی به دوره‌های متنوع و کاربردی را فراهم می‌کند. این پلتفرم امکان آموزش در زمینه‌های مختلف از فناوری اطلاعات و برنامه‌نویسی گرفته تا زبان‌های خارجی، مدیریت، و هنر را به کاربران ارائه می‌دهد. با استفاده از یودمی، کاربران می‌توانند به صورت انعطاف‌پذیر و بهینه، مهارت‌های جدیدی را یاد بگیرند و خود را برای بازار کار آماده کنند.

یکی از ویژگی‌های برجسته یودمی، کیفیت بالای دوره‌ها و حضور استادان مجرب و با تجربه در هر حوزه است. این امر به کاربران اعتماد می‌دهد که در حال دریافت آموزش از منابع قابل اعتماد و معتبر هستند و می‌توانند به بهترین شکل ممکن از آموزش‌ها بهره ببرند. به طور خلاصه، یودمی به عنوان یکی از معتبرترین و موثرترین پلتفرم‌های آموزشی آنلاین، به افراد امکان می‌دهد تا به راحتی و با کیفیت، مهارت‌های مورد نیاز خود را ارتقا دهند و به دنبال رشد و پیشرفت شغلی خود باشند.

آموزش NestJS: راهنمای کامل توسعه دهندگان
جزییات دوره
19.5 hours
243
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
25,211
4.7 از 5
دارد
دارد
دارد
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Stephen Grider Stephen Grider

معمار مهندسی