Chapters of Frontend Dev থেকে Full-Stack Backend

Week 4 - Capstone + NestJS + System Design + DrillChapter 25 of 282 min read

Englishবাংলা

NestJS crash course - Express-এর অভিজ্ঞতা দিয়ে নতুন framework

Module, controller, provider, guard, interceptor - Express-এর সাথে মিল আর অমিল

অনেক job description-এ NestJS চাওয়া হয় - কিছুদিন আগের একটা পোস্টেও আপনার চোখে পড়েছিল। ভয় পাওয়ার কিছু নেই: NestJS আসলে Express-এর উপরেই দাঁড়ানো, শুধু তার নিজের একটা শৃঙ্খলা আছে। আপনি যেই ধারণাগুলো এতদিন হাতে সাজাতেন - আলাদা folder, middleware, validation - NestJS সেগুলোকে বাধ্যতামূলক ছকে ফেলে দিয়েছে। তাই আপনার কাছে এটা নতুন ভাষা নয়, পরিচিত ধারণার নতুন নাম।

পাঁচটা মূল ধারণা

  • Module - একটা feature-এর সবকিছু বাঁধা একটা খোপ: তার controller, service, নির্ভরতা। আপনার routes+service ভাগ করারই প্রাতিষ্ঠানিক রূপ।
  • Controller - শুধু request নেওয়া আর response দেওয়া, decorator দিয়ে route ঘোষণা করা হয়।
  • Provider (service) - আসল কাজের জায়গা, @Injectable() দিয়ে চিহ্নিত; Nest নিজে থেকে যেখানে লাগে সেখানে জোগান দেয় (dependency injection)।
  • Guard - আপনার requireAuth middleware-এর Nest সংস্করণ: ঢুকতে দেবে কিনা সিদ্ধান্ত নেয়।
  • Interceptor - request যাওয়া-আসার পথে ঘিরে ধরে কাজ করা - যেমন response format এক করা, সময় মাপা, log করা।
@Controller("users")
export class UsersController {
  constructor(private usersService: UsersService) {}

  @Get()
  @UseGuards(AuthGuard) // আপনার requireAuth-এর জায়গায়
  findAll() {
    return this.usersService.findAll();
  }
}

সবচেয়ে বড় অমিলটা হলো dependency injection: Express-এ আপনি নিজে import করে জোড়া লাগাতেন, Nest-এ framework নিজে প্রতিটা অংশ বানিয়ে যেখানে দরকার পৌঁছে দেয়। প্রথমে অচেনা লাগলেও এতে test করা অনেক সহজ হয় - আসল service-এর বদলে নকলটা বসিয়ে দেওয়া যায়। আর শৃঙ্খলাটা যেহেতু সবার জন্য একই, নতুন team-এ গিয়েও কোড চেনা লাগে।

করণীয়টা সীমিত রাখুন: পুরো capstone Nest-এ আবার লিখতে যাবেন না। একটা ছোট অংশ - যেমন শুধু auth আর একটা CRUD - Nest দিয়ে বানিয়ে দেখুন। লক্ষ্য framework-টা আয়ত্ত করা নয়, interview-তে 'NestJS জানেন?' প্রশ্নে আত্মবিশ্বাস নিয়ে ধারণাগুলো বোঝাতে পারা।

সবাই যে ভুলটা করে

NestJS-কে একদম নতুন জিনিস ভেবে ভয় পাওয়া, কিংবা উল্টো - পুরো project নতুন করে Nest-এ লিখতে বসা। সঠিক মাপ: Express-এর ধারণাগুলোর সাথে মিলিয়ে পড়া, আর ছোট একটা অংশ হাতে বানানো।

আজকের Practice

একটা ছোট NestJS project খুলে শুধু একটা resource (যেমন products) বানান - module, controller, service, আর একটা guard সহ। বানাতে বানাতে প্রতিটা অংশের Express সমতুল্যটা পাশে লিখে রাখুন।

Interview-এ কীভাবে বলবেন

NestJS হলো Express-এর উপর দাঁড়ানো শৃঙ্খলাবদ্ধ framework - module দিয়ে feature ভাগ, controller শুধু request-response, provider-এ আসল কাজ, guard দিয়ে auth যাচাই। আমি Express-এ যেই গঠন হাতে সাজাতাম, Nest সেটাই ছক হিসেবে দেয়, সাথে dependency injection থাকায় test করা সহজ হয়।

All chapters of Frontend Dev থেকে Full-Stack Backend