TGViewer
️ CodeNight | آموزش برنامه نویسی ️ CodeNight | آموزش برنامه نویسی @codenight_ir · 849 subscribers
Post #77 217
الگوی Dependency Injection در NestJS؛

معماری تمیز و قابل تست
NestJS از همون ابتدا حول محور Dependency Injection طراحی شده (الهام‌گرفته از معماری Angular). به‌جای اینکه توی هر کلاس دستی یه سرویس رو new کنی، فقط اعلام می‌کنی به چی نیاز داری، و NestJS خودش نمونهٔ مناسب رو در زمان اجرا بهت تزریق می‌کنه.
قلب ماجرا دو چیز هست:

دکوریتور @Injectable() که یه کلاس رو به‌عنوان provider معرفی می‌کنه، و تزریق از طریق constructor. این کار باعث میشه سرویس‌ها از هم decoupled بمونن و وابستگی‌ها به‌جای پنهون شدن توی کد، توی امضای کلاس واضح و قابل مشاهده باشن.

نکته‌ای که خیلیا بلد نیستن، custom provider‌ها هستن. با useValue، useClass یا useFactory می‌تونی یه توکن سفارشی تعریف کنی و بسته به شرایط (مثلاً محیط dev یا prod) پیاده‌سازی متفاوتی بهش وصل کنی، بدون اینکه کد مصرف‌کننده تغییری کنه.

فایده بزرگ دیگه‌اش تست‌پذیری‌ـه. توی تست‌ها با overrideProvider می‌تونی یه سرویس واقعی (مثلاً اتصال به دیتابیس) رو با یه mock جایگزین کنی، دقیقاً مثل الگوی مشابهش توی فریمورک‌های دیگه.

@Injectable()
export class UsersService {
findOne(id: number) {
return { id, name: 'Ali' };
}
}

@Controller('users')
export class UsersController {
constructor(private readonly usersService: UsersService) {}

@Get(':id')
findOne(@Param('id') id: number) {
return this.usersService.findOne(id);
}
}


توی NestJS v12 (منتشرشده اوت ۲۰۲۶)، همین معماری DI حالا با پکیج‌های ESM-ready و پشتیبانی رسمی از Standard Schema برای validation ترکیب شده و پایه‌ی بخش جدید observability هم همینه.

#برنامه_نویسی #جاوااسکریپت #NestJS #بک_اند #تایپ_اسکریپت


کانال آموزشی کدنایت | آموزش برنامه نویسی

🆔 @codenight_ir
  • ❤ 3
More from @codenight_ir
  1. Sep 27, 2026💻 مهم‌ترین نکات در وایب کدینگ وایب کدینگ یعنی با کمک AI سریع‌تر ایده‌ات رو به کد تبدیل کن…
  2. Sep 26, 2026با این پرامپت ۲ تا باگ کریتیکال رو فیکس کردم که بعدا میتونست مشکل ساز بشه چیزهایی که قبلا…
  3. Sep 26, 2026🔐 برای بررسی امنیت پروژه‌ای که با AI می‌سازیم، چه پرامپتی بنویسیم؟ وقتی با وایب‌کدینگ یک…
  4. Sep 26, 2026⚠️ اتفاق هک شدن دیتابیس سایت فکرم رو حسابی درگیر کرد ک کل امنیت وبسایت رو با ai بررسی کنم…
  5. Sep 26, 2026مشکل از نشت فایل .env بود حالا چطور این فایل در دسترس هکر ها قرار گرفته بود جالب بود اول ک…
  6. Sep 26, 2026ببخشید بابت تاخیر و از دسترس خارج شدن سایت باید دلیلش رو پیدا میکردم و باگ های امنیتی رو ف…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →