
سلام رفقا
اگه شما هم مثل من عاشق برنامه نویسی هستید و دوست دارید تو دنیای وب پیشرفت کنید ، NestJS میتونه یه انتخاب فوق العاده باشه . امروز میخوایم قدم به قدم یاد بگیریم چطوری با NestJS برنامههای وب حرفهای بسازیم. آمادهاید؟ پس بریم سراغش
اگه هنوز نمیدونی NestJS چیه و به چه دردی میخوره این مقاله رو بخون
توی مقاله قبلی راجع به اینکه NestJS چیه مفصل صحبت کردیم ولی برای کسایی که حال خوندنشو ندارن یه توضیح میدم :)))
NestJS یه فریمورک مدرن و قدرتمنده که بر پایه Typescript و JavaScript ساخته شده که با استفاده از ساختار ماژولار و تزریق وابستگی، توسعه برنامههای بزرگ و پیچیده رو خیلی راحتتر میکنه . حالا بریم ببینیم چطوری میتونیم NestJS رو نصب و راهاندازی کنیم
برای شروع کار، باید NestJS CLI رو نصب کنیم . این ابزار خط فرمان کمک میکنه تا پروژههای جدید بسازیم و کارهای مختلف رو انجام بدیم . برای نصبش، کافیه دستور زیر رو تو خط فرمان وارد کنید :
npm install -g @nestjs/cli
بعد از نصب CLI میتونید یه پروژه جدید بسازید . برای این کار، دستور زیر رو وارد کنید و به جای project-nameاسم پروژه خودتون رو بذارید :
nest new project-name
این دستور یه پروژه جدید با ساختار پیشفرض میسازه و ازتون میپرسه که از npm یا yarn برای مدیریت بستهها استفاده کنید . بعد از انتخاب CLI همه وابستگیها رو نصب میکنه و پروژه آماده استفاده میشه.
ساختار پروژه تو NestJS خیلی مهمه . اگه درست درکش کنید ، میتونید کدهای تمیزتر و قابل نگهداریتری بنویسید . وقتی یه پروژه جدید میسازید ، یه سری پوشهها و فایلهای استاندارد بهتون داده میشه . پوشه src شامل همه کدهای اصلی پروژهتونه . فایلهایی مثل main.ts و app.module.ts هم تو این پوشه هستن
ماژولها تو NestJS نقشی کلیدی دارن . هر ماژول شامل یه سری کنترلر و سرویسه که با هم کار میکنن تا یه بخش خاص از برنامه رو پیادهسازی کنن . برای ایجاد یه ماژول جدید ، از دستور زیر استفاده کنین :
nest generate module users
این دستور یه فایل ماژول جدید با نام users.module.ts تو پوشه src میسازه
کنترلرها در واقع کلاسهایی هستن که با استفاده از دکوریتور @Controller تعریف میشن و متدهای اونا مسیرهای مختلف رو مدیریت میکنن . در واقع کنترلرها تو NestJS مسئول مدیریت درخواستهای HTTP و ارسال پاسخها هستن . اونا نقش پل بین سرویسها و کاربران رو ایفا میکنن . برای ایجاد یه کنترلر جدید ، میتونید از دستور زیر استفاده کنید :
nest generate controller users
این دستور یه فایل کنترلر جدید با نام users.controller.ts ایجاد میکنه
کنترلرها از متدهای مختلفی برای مدیریت درخواستهای HTTP استفاده میکنن مثل Get - Post - Delete - Put و Patch که هر کدوم از این متدها برای مدیریت نوع خاصی از درخواست HTTP به کار میرن
سرویسها هم کلاسهایی هستن که با استفاده از دکوریتور @Injectable تعریف میشن و قابلیت تزریق وابستگی دارن . سرویسها تو NestJS نقش مهمی در منطق تجاری برنامه دارن . اونا برای پردازش دادهها و انجام عملیات مختلف استفاده میشن . برای ایجاد یه سرویس جدید، میتونید از دستور زیر استفاده کنید :
nest generate service users
این دستور یه فایل سرویس جدید با نام users.service.ts ایجاد میکنه
برای استفاده از یه سرویس در کنترلر، باید اونو به کنترلر تزریق کنید . این کار با استفاده از سازنده کلاس کنترلر انجام میشه . کد زیر رو ببینید :
import { Controller, Get } from '@nestjs/common'; import { UsersService } from './users.service'; @Controller('controller-name') export class ControllerNameController { constructor(private readonly userService: UsersService) {} @Get() findAll() { return this.userService.findAll(); } }
خوب دقت کنین بچه ها ما الان یه کنترلر داریم که توش درخواست Get رو مدیریت کردیم . هربار درخواست Get ارسال بشه تابع findAll از سرویس کاربران یعنی همون usersService فراخوانی میشه . حالا این سرویس رو چطور متصل کردیم به کنترلرمون ؟ خب معلومه ، توی متد سازنده سرویس رو تزریق کردیم به کنترلر . به همین سادگی ، به همین زیبایی :/
همونطور که میدونید اتصال به پایگاه داده و انجام عملیات CRUD یکی از بخشهای مهم تو برنامهنویسی وب هست . تو NestJS، میتونید از TypeORM برای این کار استفاده کنید .
نکته : TypeORM یه ORM (Object-Relational Mapping) هست که به شما کمک میکنه با پایگاه داده به شیوهای شیءگرا کار کنید
برای اتصال به پایگاه داده ، اول باید پکیجهای مورد نیاز رو نصب کنید :
npm install --save @nestjs/typeorm typeorm pg
بعدش تو فایل app.module.ts، اتصال به پایگاه داده رو پیکربندی کنید :
import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; @Module({ imports: [ TypeOrmModule.forRoot({ type: 'postgres', host: 'localhost', port: 5432, username: 'test', password: 'test', database: 'test', entities: [__dirname + '/../**/*.entity{.ts,.js}'], synchronize: true, }), ], }) export class AppModule {}
حالا که همه چیز آماده شد باید برای انجام عملیات CRUD ، اول یه Entity ایجاد کنید :
import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm'; @Entity() export class User { @PrimaryGeneratedColumn() id: number; @Column() name: string; @Column() age: number; }
بعدش میتونید از ریپوزیتوریها برای انجام عملیات مختلف استفاده کنید . مثلا ما اینجا توی همون تابع findAll که تو سرویس کاربران بود میخوایم استفاده کنیم :
import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { User } from './user.entity'; @Injectable() export class UsersService { constructor( @InjectRepository(User) private readonly userRepository: Repository<User>, ) {} findAll(): Promise<User[]> { return this.userRepository.find(); } }
به همین سادگی تونستیم لیست کاربران رو از دیتابیس برگردونیم .
جمع بندی
خب دوستان، تو این مقاله با همدیگه برنامهنویسی وب با NestJS رو یاد گرفتیم و مباحث مختلفی مثل نصب و راهاندازی اولیه ، ساختار پروژه ، کنترلرها ، سرویسها و پایگاه داده رو پوشش دادیم . حالا با دنبال کردن این آموزشها ، میتونید به راحتی برنامههای وب خودتون رو با استفاده از NestJS توسعه بدید . اگه دوست دارید بیشتر یاد بگیرید، پیشنهاد میکنم مقاله بعدی رو از دست ندین . توی مقاله بعدی راجع به موارد زیر صحبت میکنم :
تمرین یادتون نره . خوشحال میشم نظرات و تجربیاتتون رو در مورد NestJS باهام به اشتراک بذاری
مخلصیم:)