مدیریت یه اپلیکیشن بزرگ میتونه خیلی خستهکننده باشه، مخصوصاً وقتی بدون یه ساختار خوب و برنامهریزی شده ساخته شده باشه. اینجور پروژهها بعد از یه مدت توی بخش نگهداری به یه کابوس تبدیل میشن. وقتی تعداد کاربران زیاد بشه و بخوای ویژگیهای جدید اضافه کنی یا تغییرات کوچیک بدی، اوضاع پیچیده و شلوغ میشه و انگار داری با یه کلاف سردرگم کار میکنی.
اما Nest.js اومده که این مشکلات رو حل کنه. این فریمورک با استفاده از اصول مهندسی نرمافزار مدرن و معماری ماژولار، کارو خیلی راحتتر میکنه.
Nest.js از TypeScript استفاده میکنه تا تو کدها رو بهتر چک کنی و یه معماری آماده ارائه میده که اپلیکیشنهات هم قابل تست، هم مقیاسپذیر، هم جدا از هم و هم به راحتی قابل نگهداری باشن.
توی این مقاله میخوایم Nest.js رو زیر و رو کنیم و ببینیم چه چیزایی میتونیم باهاش بسازیم. همچنین، مزایا و معایب این فریمورک رو بررسی میکنیم تا بفهمی چرا شرکتهای زیادی ترجیحش میدن. آخرسر هم یه مثال کاربردی از ساخت یه API لیست وظایف (To-do) با Nest.js بهت نشون میدیم.
Nest.js یکی از سریعترین فریمورکهای Node.js هست که برای ساخت اپلیکیشنهای قدرتمند و مقیاسپذیر بکاند استفاده میشه. این فریمورک به خاطر اینکه اپلیکیشنهایی میسازه که هم به راحتی قابل تست، هم قابل نگهداری، و هم مقیاسپذیر هستن، خیلی معروفه.
Nest.js با ترکیب جاوااسکریپت مدرن و TypeScript، بهت کمک میکنه تا یه اپلیکیشن بکاند حرفهای و خفن بسازی.
این فریمورک توی GitHub کلی طرفدار داره؛ تا الان بیشتر از ۴۶.۶ هزار ستاره و ۵.۴ هزار فورک گرفته و هر هفته چیزی حدود ۷۰۰ هزار بار دانلود میشه. خلاصه، اگه دنبال یه فریمورک درست و حسابی برای پروژههات هستی، Nest.js همون چیزیه که لازم داری. مخصوصاً وقتی که باید یه اپلیکیشن مقیاسپذیر و مناسب سطح سازمانی بسازی.
توی بخش بعدی، بهت میگم Nest.js دقیقاً برای چی استفاده میشه و کدوم شرکتها ازش توی پروژههاشون استفاده میکنن.
Nest.js یه فریمورک سمت سرور برای Node.js هست که برای ساخت اپلیکیشنهای بکاند تستپذیر و قابل نگهداری به کار میره. با استفاده از Node.js و Nest.js، میتونی تقریباً هر نوع اپلیکیشنی که به ذهنت میرسه بسازی و تنها محدودیتت ویژگیهای اپلیکیشنت خواهد بود.
چون Nest.js بر اساس TypeScript ساخته شده، خیلی از تیمها که به قدرت تایپچکینگ TypeScript علاقه دارن، این فریمورک رو انتخاب میکنن. یادگیری و تسلط به Nest.js هم خیلی سادهست، چون یه CLI قدرتمند داره که بهرهوری رو افزایش میده و توسعه رو راحتتر میکنه. این CLI قدرتمند بهت کمک میکنه تا هر پروژه سروری رو سریع شروع کنی و تا انتها پیش ببری.
علاوه بر این، Nest.js مستندات خیلی دقیقی داره و جامعهی فعالی از توسعهدهندهها و مشارکتکنندهها پشتیبانشه که آمادن تا به هر مشکلی فوری پاسخ بدن.
همهی اینها باعث میشه که خیلی از شرکتها فریمورکهاشون رو عوض کنن و به سمت Nest.js بیان. در ادامه لیستی از چندتا از برندهای معروف که از Nest.js توی پروژههاشون استفاده میکنن رو میبینی.
Roche یه شرکت بینالمللی مراقبتهای بهداشتیه که توی دو بخش داروسازی و تشخیص فعالیت میکنه. این شرکت بزرگ بیوتکنولوژی، از فریمورک Nest.js برای سایت اصلیش استفاده میکنه تا به بیمارانش به خوبی خدمات بده و بتونه خدماتش رو گسترش بده.
آدیداس، بزرگترین تولیدکننده لوازم ورزشی در اروپاست و دومین شرکت بزرگ جهان در این زمینه هست. این برند معروف که به خاطر طراحی و تولید کفش، لباس و اکسسوری شناخته میشه، به دلیل مقیاسپذیری بالای Nest.js ازش برای ساخت اپلیکیشنهای بزرگ و کارآمد استفاده میکنه.
Decathlon یه خردهفروش لوازم ورزشیه که بیشتر از ۱۵۰۰ فروشگاه در ۵۷ کشور داره. این شرکت از Nest.js به عنوان بکاند وباپلیکیشنش استفاده میکنه تا بتونه کدهای قدیمیشون رو نگهداری و مقیاسپذیر کنه.
میتونی لیست بیشتری از شرکتها، پروژهها و ابزارهایی که با Nest.js ساخته شدن رو توی GitHub پیدا کنی.
حالا در ادامه میخوایم بررسی کنیم که چرا تو و تیمت هم باید برای پروژهی بعدیتون Nest.js رو انتخاب کنید و دلیل اینکه بقیه از این فریمورک استفاده میکنن چیه و چه مزایایی داره.
انتخاب یه فریمورک بستگی به نوع اپلیکیشنی داره که میخوای بسازی، چون هر اپلیکیشن به یه سری ابزار و امکانات خاص نیاز داره.
اینجا میخوایم دلایل مختلفی رو بررسی کنیم که چرا Nest.js میتونه انتخاب خوبی برای پروژه بعدی تو باشه.
Nest.js خیلی آسونه، مخصوصاً اگه قبلاً با Angular کار کرده باشی. این یعنی تو و تیمت میتونید خیلی سریع به ساختار و اصولش عادت کنید و روند توسعه رو سریع و بهینه پیش ببرید.
Nest.js از همون اول با یه معماری محکم برای اپلیکیشنهای سطح سازمانی (Enterprise) طراحی شده. این باعث میشه که ساخت اپلیکیشنهای مقیاسپذیر و قابل نگهداری خیلی راحت باشه.
با Nest.js میتونی سرویسهای بکاند مختلفی مثل APIهای RESTful، اپلیکیشنهای GraphQL، اپلیکیشنهای MVC، WebSocket، خط فرمان (CLI) و حتی Cron jobs رو به سادگی بسازی. چون معماری استانداردش از قبل توی فریمورک تعبیه شده.
Nest.js از تکنولوژیهای مدرنی مثل TypeScript، الگوهای معماری ضد خطا، مستندات عالی و تستهای واحد راحت استفاده میکنه. این یعنی با خیال راحت میتونی اپلیکیشنهایی بسازی که هم مقیاسپذیرن و هم قابل نگهداری.
Nest.js مخصوص ساخت اپلیکیشنهای بزرگ، چه بهصورت مونوولیت (یکپارچه) و چه بهصورت میکروسرویس طراحی شده. معماریش رو از همون اول آماده کرده و تو فقط باید منطق کاری خودت رو بهش اضافه کنی.
Nest.js یه جامعه بزرگ و فعال داره که کلی ماژول آماده و پشتیبانی شده رو ارائه میده. از ابزارهایی مثل TypeORM، Mongoose و GraphQL گرفته تا لاگگیری، اعتبارسنجی، کش (Caching)، WebSocket و خیلی چیزای دیگه، همه رو میتونی به راحتی باهاش بسازی.
در ادامه، میخوایم مزایا و معایب Nest.js رو بررسی کنیم تا راحتتر بتونی تصمیم بگیری که آیا این فریمورک برای پروژهی تو مناسبه یا نه.
حالا میخوایم مزایا و معایب Nest.js رو بررسی کنیم تا ببینیم چرا این فریمورک انقدر محبوب شده توی دنیای Node.js.
بیا اول به مزایاش بپردازیم:
Nest.js در عین حال که امکانات پیچیده و قدرتمندی داره، کار کردن باهاش خیلی راحته. تیم Nest.js این فریمورک رو طوری طراحی کرده که توسعهدهندهها به سرعت بتونن شروع کنن و فقط روی نوشتن منطق اصلی برنامه تمرکز کنن. مسائل مهم دیگه مثل امنیت رو هم خود فریمورک هندل میکنه.
اگه تا حالا با Angular کار کردی، خوشحال میشی بدونی که Nest.js از سینتکس و ساختار مشابهی استفاده میکنه، اما برای بکاند! این باعث میشه پروژههای سازمانیت رو خیلی منظم و با ساختار مناسب بسازی.
Nest.js از همون اول با TypeScript کار میکنه و این یعنی هم سرعت توسعه بالا میره و هم خطاها و مشکلات سریعتر شناسایی میشن. TypeScript این امکان رو میده که خطاها رو قبل از اجرای کد متوجه بشی و به همین خاطر، نگهداری پروژهها هم راحتتر میشه.
Nest.js یکی از بهترین مستندات رو بین فریمورکها داره. این یعنی وقتی به مشکلی برخوردی، میتونی خیلی سریع راهحلش رو پیدا کنی و نیازی به سردرگمی و جستجوهای طولانی نیست.
Nest.js با ارائهی یه ساختار و معماری قوی، بهت کمک میکنه تا پروژههات رو سریعتر توسعه بدی. چه در حال ساخت یه نمونه اولیه (MVP) باشی و چه نسخه نهایی اپلیکیشن، Nest.js زمان توسعه رو به خاطر معماری منظمش کاهش میده.
خب، همونطور که میگن: «هر چیزی خوبیها و بدیهای خودش رو داره». Nest.js هم از این قاعده مستثنی نیست. بیایم چندتا از معایبش رو بررسی کنیم.
اگه تازهواردِ دنیای برنامهنویسی هستی یا با Angular آشنایی نداری، شاید یادگیری و تسلط به Nest.js برات یه کم سخت باشه. همینطور، اگه با TypeScript کار نکردی، ممکنه اولش برات چالشبرانگیز باشه. ولی نگران نباش، با تمرین و کار کردن بهش مسلط میشی.
هرچند TypeScript مزایای زیادی داره، اما وقتی نوبت به دیباگ کردن میرسه، ممکنه برای توسعهدهندههایی که تازه با TypeScript آشنا شدن، یه مقدار اذیتکننده باشه. دیباگ کردن خطاهای TypeScript بعضی وقتها زمانبر میشه.
اینم از مزایا و معایب Nest.js. با توجه به این ویژگیها، میتونی راحتتر تصمیم بگیری که آیا این فریمورک برای پروژهی تو مناسبه یا نه.
در بخش بعدی، میخوایم با ساخت یه API ساده برای مدیریت لیست کارها (To-do list) با Nest.js، چیزایی که یاد گرفتیم رو عملی کنیم. با ما همراه باش تا یاد بگیریم چطوری یه API بسازیم که کاربران بتونن لیست کارهای خودشون رو مدیریت کنن.
حالا وقتشه که هر چی درباره Nest.js یاد گرفتیم رو در عمل به کار ببریم و اولین RESTful API خودمون رو بسازیم تا ببینیم این فریمورک چقدر قدرتمند و ساده هست.
میخوایم از مرحله نصب تا ساخت کامل یه API رو با هم جلو ببریم. پس بیا شروع کنیم!
اولین قدم اینه که فریمورک رو نصب کنیم و ابزارهای لازم رو آماده کنیم تا بتونیم پروژهمون رو راه بندازیم.
نصب Nest CLI
برای ایجاد پروژههای جدید با Nest.js، اول باید CLI (ابزار خط فرمان) اون رو نصب کنی. برای این کار، کافیه دستور زیر رو توی ترمینال اجرا کنی:
npm i -g @nestjs/cli
ایجاد پروژه جدید
حالا که CLI نصب شد، میتونیم یه پروژه جدید درست کنیم. دستور زیر رو اجرا کن تا یه پروژه با اسم "nest-todo-api" ساخته بشه:
nest new nest-todo-api
وقتی پروژه ساخته شد، وارد پوشه پروژه شو و با دستور زیر پروژه رو اجرا کن:
cd nest-todo-api npm run start:dev
تا اینجا Nest CLI رو نصب کردیم و یه پروژه جدید ساختیم. حالا وقتشه API رو پیادهسازی کنیم.
باز کردن پروژه
پروژه رو تو هر ادیتوری که دوست داری باز کن (مثلاً VSCode). اگه الان به آدرس localhost:3000 بری، باید یه پیام خوشآمد بهت نشون بده که یعنی همه چی درست کار میکنه.
قبل از اینکه بریم سراغ کدنویسی API، باید یه دیتابیس MongoDB رو راه بندازیم تا دادههای مربوط به لیست کارهامون (To-do) رو مدیریت کنیم.
تولید فایلهای لازم
حالا باید فایلهای مورد نیاز برای API رو بسازیم. برای این کار، از دستورات زیر استفاده کن:
nest generate module todos nest generate controller todos nest generate service todos
تا اینجا هر چیزی که نیاز داشتیم رو ساختیم. حالا آمادهایم که بریم سراغ قسمتهای بعدی و API رو بسازیم!
حالا میرسیم به بخش تنظیم دیتابیس MongoDB تا بتونیم پروژهای که ساختیم رو بهش متصل کنیم.
اول از همه باید MongoDB رو روی سیستم خودت نصب کنی. بعد از نصب، برای اینکه بتونیم تو پروژهمون از MongoDB استفاده کنیم، نیاز داریم کتابخونه Mongoose رو هم نصب کنیم. دستور زیر رو تو ترمینال اجرا کن تا این کتابخونه اضافه بشه:
npm install --save @nestjs/mongoose mongoose
همین! تا اینجا کتابخونه مورد نیازمون رو نصب کردیم. حالا باید Mongoose رو توی پروژهمون وارد (import) کنیم تا بتونیم با MongoDB ارتباط برقرار کنیم.
باید Mongoose رو توی فایل اصلی اپلیکیشنمون (که همون AppModule هست) اضافه کنیم. قبل از اینکه فایلهای لازم رو بسازیم، باید کد زیر رو توی این فایل بنویسی تا MongoDB به پروژه وصل بشه:
import { Module } from '@nestjs/common'; import { AppController } from './app.controller'; import { AppService } from './app.service'; import { MongooseModule } from '@nestjs/mongoose'; import { TodosModule } from './todos/todos.module'; @Module({ imports: [MongooseModule.forRoot('mongodb://localhost/todos'), TodosModule], controllers: [AppController], providers: [AppService], }) export class AppModule {}
توی این کد، ما از MongooseModule استفاده کردیم تا دیتابیس محلی MongoDB که روی localhost و به نام todos هست رو به پروژه وصل کنیم.
حالا باید اسکیمای دیتابیس رو بسازیم تا مشخص کنیم دادهها چطوری توی دیتابیس ذخیره بشن. اسکیمای دیتابیس مثل یه نقشه هست که نشون میده اطلاعات توی هر رکورد چطور نمایش داده بشن.
برای این کار، باید فایل todos.schema.ts رو بسازیم و کد زیر رو داخلش قرار بدیم:
import * as mongoose from 'mongoose'; export const ItemSchema = new mongoose.Schema({ title: String, is_completed: Boolean, description: String, });
توی این اسکیمای ساده، ما سه فیلد داریم: title (عنوان کار)، is_completed (آیا کار انجام شده یا نه) و description (توضیحات).
حالا نوبت به این میرسه که یه اینترفیس برای چک کردن نوع دادهها (Type-checking) تعریف کنیم. این اینترفیس به ما کمک میکنه تا مطمئن بشیم که دادههای وارد شده به دیتابیس از نوع درستی هستن.
برای این کار، باید یه فایل جدید به نام todo.interface.ts بسازیم و کد زیر رو داخلش قرار بدیم:
import { Document } from 'mongoose'; export interface Item extends Document { id?: string; title: string; description?: string; is_completed: boolean; }
توی این کد، Item اینترفیس ماست که مشخص میکنه هر کار (To-do) باید چه فیلدهایی داشته باشه: title (عنوان)، description (توضیحات اختیاری)، و is_completed (انجامشده یا نه).
حالا نوبت میرسه به ساخت DTO (Data Transfer Object)، که وظیفش اینه که تعیین کنه دادهها چطوری بین آبجکتها و توی شبکه رد و بدل بشن.
در واقع، DTO یه کلاس سادهست که همون ویژگیهای اسکیمای ما رو داره:
// ./dto/create-todo.ts export class CreateItemDto { readonly title: string; readonly description: string; readonly is_completed: boolean; }
این کلاس همون فیلدهای title، description و is_completed رو داره که قراره دادهها رو با همین ساختار از طریق شبکه بفرسته.
حالا بریم سراغ فایل سرویس که مسئول ارتباط و تعامل با دیتابیس MongoDB هست. این سرویس وظیفه داره که دادهها رو از دیتابیس CRUD (یعنی ایجاد، خواندن، بهروزرسانی و حذف) کنه. همه کارهای ارتباطی با دیتابیس رو اینجا انجام میدیم.
فایل سرویس رو باز کن و کدهای زیر رو توش قرار بده:
import { Injectable } from '@nestjs/common'; import { Todo } from './interfaces/todo.interface'; import { Model } from 'mongoose'; import { InjectModel } from '@nestjs/mongoose'; import { CreateTodoDto } from './dto/create-todo.dto'; @Injectable() export class ItemsService { constructor(@InjectModel('Todo') private readonly todoModel: Model<Todo>) {} async findAll(): Promise<Todo[]> { return await this.todoModel.find(); } async findOne(id: string): Promise<Todo> { return await this.todoModel.findOne({ _id: id }); } async create(item: CreateTodoDto): Promise<Todo> { const newTodo = new this.todoModel(item); return await newTodo.save(); } async delete(id: string): Promise<Todo> { return await this.todoModel.findByIdAndRemove(id); } async update(id: string, todo: CreateTodoDto): Promise<Todo> { return await this.todoModel.findByIdAndUpdate(id, todo, { new: true }); } }
این کدها در واقع سرویس CRUD رو توی API ما پیادهسازی میکنن. با استفاده از مدل Mongoose، به دیتابیس MongoDB دسترسی پیدا میکنیم تا بتونیم دادهها رو ذخیره، بازیابی، بهروزرسانی یا حذف کنیم.
در مرحله بعدی، باید فایل کنترلر رو بسازیم تا منطق API رو مدیریت کنه و با سرویسی که همین الان ساختیم ارتباط برقرار کنه.
کنترلر توی Nest.js مسئول اینه که درخواستهایی که از طرف کاربر میاد رو هندل کنه و بعد از پردازش، یه پاسخ به کاربر برگردونه.
حالا بیایم کنترلر مربوط به لیست کارهامون رو تعریف کنیم. این کد رو توی فایل کنترلرت بذار:
import { Controller, Get, Post, Put, Delete, Body, Param, } from '@nestjs/common'; import { CreateTodoDto } from './dto/create-todo.dto'; import { TodosService } from './todos.service'; import { Todo } from './interfaces/todo.interface'; @Controller('items') export class ItemsController { constructor(private readonly todosService: TodosService) {} @Get() findAll(): Promise<Todo[]> { return this.todosService.findAll(); } @Get(':id') findOne(@Param('id') id): Promise<Todo> { return this.todosService.findOne(id); } @Post() create(@Body() createTodoDto: CreateTodoDto): Promise<Todo> { return this.todosService.create(createTodoDto); } @Delete(':id') delete(@Param('id') id): Promise<Todo> { return this.todosService.delete(id); } @Put(':id') update(@Body() updateTodoDto: CreateTodoDto, @Param('id') id): Promise<Todo> { return this.todosService.update(id, updateTodoDto); } }
توی این کد، از تزئینات یا همون annotations استفاده شده که باعث میشه Nest.js بتونه پشت صحنه خیلی از کارها رو خودش مدیریت کنه. مثلاً برای هر مسیری توی API ما از تزئینات مثل @Get()، @Post()، @Put() و @Delete() استفاده کردیم که هرکدوم مسئول مدیریت نوع خاصی از درخواستهای RESTful API هستن.
حالا این کنترلر از سرویسی که قبلاً نوشتیم استفاده میکنه تا درخواستهای دریافتی رو هندل کنه و به دیتابیس وصل بشه.
حالا که API رو ساختیم، وقتشه که با Postman تستش کنیم. اول باید سرور رو اجرا کنیم تا مطمئن بشیم همه چیز درست کار میکنه و آماده هست برای استفاده.
برای شروع سرور، این دستور رو توی ترمینال اجرا کن:
npm run start:dev
بعد از اینکه سرور اجرا شد، میتونی Postman رو دانلود و اجرا کنی و شروع کنی به تست کردن API که ساختی.
Nest.js یک فریمورک قدرتمند برای ساخت اپلیکیشنهای بکاند با استفاده از Node.js هست. این فریمورک با بهرهگیری از TypeScript و معماری ماژولار، به توسعهدهندگان کمک میکنه تا اپلیکیشنهای مقیاسپذیر، تستپذیر و قابل نگهداری بسازن.
Nest.js از لحاظ ساختاری و امکانات، تفاوتهای زیادی با Express.js داره. Nest.js یک معماری منظمتر و مدرنتر ارائه میده و از TypeScript پشتیبانی میکنه، در حالی که Express.js سادهتره و از جاوااسکریپت استفاده میکنه. Nest.js بیشتر برای پروژههای بزرگ و مقیاسپذیر توصیه میشه.
اگر قبلاً با Angular یا TypeScript کار کرده باشی، یادگیری Nest.js برات خیلی راحتتر خواهد بود. با این حال، حتی اگر با این فناوریها آشنایی نداری، مستندات قوی و ساختار منظم Nest.js یادگیریش رو آسانتر میکنه.
بله، Nest.js برای پروژههای کوچک هم کاربردی هست. اگرچه به خاطر ساختار پیشرفته و معماری مدرنش بیشتر برای پروژههای بزرگ توصیه میشه، اما میتونی برای پروژههای کوچک هم ازش استفاده کنی و از مزایای TypeScript و ماژولار بودنش بهره ببری.
شرکتهای بزرگی مثل Adidas، Roche و Decathlon از Nest.js برای پروژههای سازمانی خودشون استفاده میکنن. این نشون میده که Nest.js برای ساخت اپلیکیشنهای مقیاسپذیر و پیچیده در سطح بینالمللی مورد استفاده قرار میگیره.
بله، میتونی. هرچند Nest.js از TypeScript پشتیبانی میکنه و توصیه میشه که با TypeScript کار کنی، اما همچنان میتونی از جاوااسکریپت هم استفاده کنی. با این حال، برای بهرهمندی از مزایای کامل Nest.js، بهتره که از TypeScript استفاده کنی.
کاملاً! Nest.js به خاطر معماری ماژولارش به راحتی قابل توسعه و مقیاسپذیر هست. این فریمورک برای پروژههای بزرگ طراحی شده و به راحتی میتونه در برابر افزایش حجم کاربر و دادهها مقاومت کنه.
بله، Nest.js یکی از بهترین گزینهها برای ساخت APIهای RESTful و GraphQL هست. این فریمورک با ساختار منظم و ابزارهای پیشساخته، بهت کمک میکنه APIهای قدرتمند و کارآمدی بسازی.
Nest.js به خاطر انعطافپذیری بالا، از انواع پایگاه دادهها مثل MongoDB، MySQL، PostgreSQL، و حتی پایگاه دادههای NoSQL پشتیبانی میکنه. با استفاده از ابزارهایی مثل TypeORM یا Mongoose میتونی به راحتی دیتابیس مورد نظرت رو متصل کنی.
بله، Nest.js یه فریمورک سمت سرور (بکاند) هست و برای ساخت بخشهای مربوط به سرور و ارتباط با دیتابیس به کار میره. برای توسعه فرانتاند میتونی از فریمورکهایی مثل Angular یا React استفاده کنی.
Nest.js یه فریمورک قدرتمند برای Node.js و یکی از محبوبترین فریمورکهای TypeScript در حال حاضر به حساب میاد. این فریمورک یه معماری استاندارد توسعه و بهترین اصول مهندسی نرمافزار رو در اختیار تیمهای برنامهنویسی قرار میده. با استفاده از Nest.js، توسعهدهندهها میتونن فرآیندهای تکراری مهندسی رو حذف کنن و فقط روی نوشتن منطق اصلی اپلیکیشن تمرکز کنن.
همین مزایا باعث شده برندهای مشهوری مثل Adidas و Roche برای اپلیکیشنهای سازمانیشون از این فریمورک استفاده کنن.
توی این مقاله، ما یه پایه محکم برای درک Nest.js گذاشتیم و توضیح دادیم که چرا باید بهش فکر کنی. همچنین، یه API ساده برای لیست کارها (to-do) ساختیم تا قدرت این فریمورک رو توی عمل ببینی.
حالا دیگه انتخاب با توئه که ببینی آیا Nest.js بهترین فریمورک برای پروژت هست یا نه!
دوره الفبای برنامه نویسی با هدف انتخاب زبان برنامه نویسی مناسب برای شما و پاسخگویی به سوالات متداول در شروع یادگیری موقتا رایگان شد: