অনেক 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 - আপনার
requireAuthmiddleware-এর 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 করা সহজ হয়।