اگه برای پروژههای Nodejsی از Express استفاده میکنین، پیشنهاد میکنم حتما یه نگاهی به NestJS هم بندازین...حدود 3 ماه پیش بود که برای پروژهای که قرار بود بکند Nodejsی باشه بعد از چند روز تحقیق تصمیم گرفتیم به جای Express از Nest استفاده کنیم...
گفتیم یکم باهاش کار میکنیم اگه دیدیم راضی نیستیم برمیگردیم سر Express.
امروز اون پروژه تموم شد و از اینکه با NestJS زدیمش کامل راضیایم...
بزرگ ترین خوبی ای که Nest داره اینه که ساختار مشخص و مرتبی داره. درسته که حتی بدون استفاده از هیچ فریمورکی هم میشه دقیقا همین ساختار رو ایجاد کرد ولی موضوعی که هست اینه که Nest به طور پیشفرض یعنی زمانی که شما پروژه جدیدی ایجاد میکنین یه ساختار مشخص داره و مستنداتش هم جوریه که شما رو مجبور میکنه که تا حد نسبتا خوبی ساختار مشخص و کدهای مرتبی داشته باشین...
البته که از یه جایی به بعدش دیگه به اون برنامه نویس برمیگرده که کدهارو چجوری بزنه.
همونطور که میدونین تو Express ساختار مشخصی نداریم و هر تیم میاد بر اساس دانش و سلیقه خودش یک ساختار رو در نظر میگیره، به همین خاطر تو پروژههای Expressی ساختاری که یک تیم برای پروژشون در نظر گرفتن ممکنه تو بعضی از قسمتها با تیم دیگه فرق کنه. ولی این موضوع تو Nest به نظرم خیلی کمتر پیش میاد چون ساختار کلی تو Nest مشخصه.
در واقع Express با شعار unopinionated اومد که میگفت هرکس با هر ساختاری که بخواد میتونه ازش استفاده کنه و همین باعث میشد codebase اکثر پروژهها تفاوت داشته باشه ولی با Nest ساختار codebase پروژه قابل درک برای همه است...
چند نمونه دیگه از خوبیهای Nest :
* معماری و ساختار پیشفرض Stable و Clean ( که البته این امکان رو هم دارین که تغییرش بدین)
* نِست عملا یک wrapper هم هست، بهتون یه Abstraction Layer میده تو سطوح بالاتر که خیلی کارها رو آسونتر میکنه همونطور که Under Hood میتونید از Fastify هم استفاده کنید.
* استفاده از DI و دیزاین پترن هایی مثل Singleton ( به صورت پیشفرض)
درسته همه این ها تو Express هم موجوده و یا میتونیم داشته باشیم ولی کنار اینها فیچرهای امنیتی Nest، قابلیتها و داکیومنت خیلی کاملش رو هم باید در نظر بگیریم.
به نظرم احتمالا در آینده نزدیک Nest خیلی محبوبتر از چیزی که الان هست میشه، ولی خب قطعا هر کدوم خوبیهای خاص خودشون رو دارن...