خب. این اولین نوشته منه و امیدوارم که خوشتون بیاد :)
میخام تو اولین پست ام یه پکیج رو معرفی کنم و البته خودم نوشتمش.
داشتم در مورد دکوریتورها میخوندم و تمرین میکردم که یهو همچین ایدهی به ذهنم خورد.
خب پیچیدگی روتینگ در express بر هیچکس پوشیده نیست!. اما میتونیم با دکوریتورها یه کار خفن و تمیز بکنیم.
نست فوق العادس! اما گاهی اوقات ما میخوایم خارج از ساختار نست یا انقد پروژه بزرگ نیست که خودمون رو درگیر با NestJs بکنیم. پروژه رو پیش ببریم
خب مثل همه پکیج ها ما باید پکیج رو با دستور زیر نصب کنیم:
npm install easy-express-router
بعد باید قابلیت استفاده از دکوریتور ها و متادیتا رو در فایل کانفیگ typescript فعال کنیم. با اضافه کردن اینا:
{ "experimentalDecorators": true, "emitDecoratorMetadata": true, }
نصب و کانفیگ تموم شد. و ما میتونیم از پکیج استفاده کنیم ( همانطور که در بالا گفتم فقط در تایپ اسکریپت میشه استفاده کرد )
به عنوان مثال من یه todo app خیلی ساده دارم که دو فایل اصلی تایپ اسکریپت داره یکی server.ts همانجور که از اسمش معلوم هست فایل اصلی ماست. و todos.controller.ts فایلی هست که ما استفاده از دکوریتورها و پکیج easy-express-router اندپوینت های todo رو مینویسیم:
خب اولین کاری که میکنیم میاییم و اولین کنترلرمون (todos.controller.ts) رو به این صورت مینویسیم:
در دکوریتور Controller ما پرفیکس رو ست کردیم تا روی همه اندپوینت هامون در کلاس ست(اعمال) بشه.
و در کلاس واسه هر متدی یه دکوریتور تعریف کردیم و هروقت این اندپوینت ها بهشون ریکوئست زده بشه متدها کال میشن
و در مرحله بعد ما باید کنترلرمون رو به easyRouter اضافه کنیم( ارایه هست ) و اونارو به express معرفی کنیم:
در EasyRouter.setController ما لیستی از کنترلرهامون رو میتونیم به ایزی روتر اضافه کنیم
و EasyRouter.initController اونارو به express به عبارتی معرفی کنیم با استفاده از app.use
به همین سادگی و تمیزی ! :)
ما دو روش داریم واسه استفاده از میدلورها:
در مرحله اول ما میخایم میدلور auth مون رو واسه همه اندپوینت ها استفاده کنیم:
ما میتونیم لیستی از میدلورها داشته باشید و همانطور که مشخصه اولیت بر اساس جایگاه میدلور در ارایه هستش.
و حالا میخایم یه میدلور برای چک کردن رول کاربر واسه اندپوینت / POST داشته باشیم :
خب اینجور ریکوئستی که واسه اندپوینت / POST میاد به این صورت پردازش میشه:
POST domin.com/todos
گیت هاب:
https://github.com/sajjadmrx/easy-express-router
پکیج منیجر npm:
https://www.npmjs.com/package/easy-express-router
خوش حال میشم به توسعه این پکیج کمک کنید ??