رفتن به مطلب
مرورگر پیشنهادی آرساکیا گیم مرورگر های تحت موتور کرومیوم می‌باشد، برای دانلود روی مرورگر انتخابی خود کلیک کنید
Google Chrome Microsoft Edge Ungoogled Chromium Brave Opera GX Opera

ارسال‌های توصیه شده

خب تو این پست میخوایم راجب فریمورک NestJs صحبت کنیم

 

نست جی اس یک فریمورک بک اندیه که با استفاده از حداکثر قدرت تایپ اسکریپت قابلیت های خاصی رو به خودش اضافه کرده و روز به روز در حال محبوب شدنه و به اکسپرس ترجیح داده میشه.

میخوایم باهم دیگه چندتا ویژگی خاصشو ببینیم.

 

  • تزریق وابستگی (dependency injection) :

 

نست جی اس میاد و با استفاده از تزریق پرووایدر ها (providers) و ... به ماژوال ها جهت مدیریت دپندنسی های یک ماژول، میاد تمامی وابستگی ها و ابزارایی که یک ماژول نیاز داره رو بهش میده

 

  • استفاده از حداکثری قدرت تایپ اسکریپت :

 

این جمله به چه معنیه؟ ما توی اکسپرس هم میتونیم از تایپ اسکریپت استفاده کنیم، اینجا استفاده حداکثری ازش چه معنیی میده؟ توی نست چون همه کار ها با استفاده از دکوریتور(decorator) ها انجام میشه، به کدتون این قابلیت رو میده که بعدا بتونی دوباره ازش استفاده بکنی(reuseble) هست. جدای اون بخاطر معماریه ioc میتونیم قابلیت dependency injection رو داشته باشیم (یعنی این تزریق وابستگی بخاطر وجود تایپ اسکریپته که امکان پذیره!) و بحث static type و auto complete هم که واضح هست چه کمک شایانی به خوانا بودن و بدون خطا بودن کدمون میکنه.

 

خب یکم از dependency injection (DI) بگیم

همانطور که میدونیم NestJs بر پایه کلس ها (class base) هستن. اما چرا؟

چون سیستم تزریق وابستگی باید از هر provider یا entity یا controller یک نمونه بسازه و بعد عملیات تزریق رو انجام بده، اما function ها قابل تزریق نیستن و دقیقا به همین دلیله که از class ها استفاده میکنیم! حالا بریم که پشت صحنه چجوری داره تزریق وابستگی کار میکنه

 

  1. در مرحله اول سیستم تزریق وابستکی
    از تمامی کلس هایی که قابل تزریق هستن (از دکوریتور هایی مانند Injectable استفاده شده) یک نمونه میسازه و برای کلس هایی که این قابلیتو نداره مقدار undefiend رو قرار میده (مثلا یک کلس رو تعریف کردیم ولی injectable نیست مثل dto ها!)
     
  2. در مرحله دوم نست جی اس با توجه به وابستگی های تعریف شده داخل ماژول های ایمپورت شده داخل appModule میاد وابستگی هارو به صورت درختی resolve میکنه (مثلا اگه userController به userService و userService به userEntity وابستس پس پشت صحنه از userController به userEntity میرسیم! و وقتی رسیدیم سیستم DI برای اطمینان از درست بودن وابستگیا این مسیر رو برعکس میره (یعنی وقتی به userEntity میرسه دوباره از userEntity به userController میرسه))
     
  3. تو مرحله سوم وقت تزریقه! میاد از هر چیزی که اونجا برای وابستگی اعلام شدرو تزریق میکنه، یک نمونه از هر کلس میسازه و تا آخر از همون یک نمونه در تمامی برنامه از همون استفاده میکنه!

    حالا سوال اصلی اینه نست چجوری میفهمه چه کلسیو به کجا تزریق کنه؟ درست حدس زدین، با استفاده از تایپ ها!. ینی وقتی توی تایپ اسکریپت یک سرویس داریم که از نوع userService هست، سیستم میره اون رو داخل provider های ماژول پیدا کنه، اگه پیداش نکرد ارور میده که نتونسته dependency هارو resolve کنه!

    حالا سوال بعدی اینه که چرا ترتیب داخلشون مهم نیست؟
    ینی چرا اهمیت نداره کدوم سرویسو اول لیست بزاریم؟
    درواقع اون توکن رو سرچ میکنه! بنابراین ترتیب مهم نیست و وجود اون توکن و اسم مهمه! 
     

(میگن اگه به یکی توضیح بدی خودت بیشتر میتونی بفهمی که چی داری میگی میدونم میدونم میدونم محیط، محیطه گیمه ولی بدلیل نبود اینترنت بین المللی عه)

:)

لینک به دیدگاه
https://forum.arsacia.ir/topic/100381-my-experience/
به اشتراک گذاری در سایت های دیگر

ممنون دوست من عالی بود...

پ.ن: اینترنتا داره کم کم وصل میشه و فعلا سایت های آسیایی میارن... احتمالا تا فردا سایت های بیشتری فعال بشن (مثلا اروپایی و آمریکایی)

  • دوست دارم که 1

NO Thing to DO

:My Account

Faise.png

:My Brothers

Olden.png

Parshan.png

MohammadAli.png

Shibemarg.png

لینک به دیدگاه
https://forum.arsacia.ir/topic/100381-my-experience/#findComment-1028368
به اشتراک گذاری در سایت های دیگر

۱ ساعت قبل، MiLo گفته است:

خب تو این پست میخوایم راجب فریمورک NestJs صحبت کنیم

 

نست جی اس یک فریمورک بک اندیه که با استفاده از حداکثر قدرت تایپ اسکریپت قابلیت های خاصی رو به خودش اضافه کرده و روز به روز در حال محبوب شدنه و به اکسپرس ترجیح داده میشه.

میخوایم باهم دیگه چندتا ویژگی خاصشو ببینیم.

 

  • تزریق وابستگی (dependency injection) :

 

نست جی اس میاد و با استفاده از تزریق پرووایدر ها (providers) و ... به ماژوال ها جهت مدیریت دپندنسی های یک ماژول، میاد تمامی وابستگی ها و ابزارایی که یک ماژول نیاز داره رو بهش میده

 

  • استفاده از حداکثری قدرت تایپ اسکریپت :

 

این جمله به چه معنیه؟ ما توی اکسپرس هم میتونیم از تایپ اسکریپت استفاده کنیم، اینجا استفاده حداکثری ازش چه معنیی میده؟ توی نست چون همه کار ها با استفاده از دکوریتور(decorator) ها انجام میشه، به کدتون این قابلیت رو میده که بعدا بتونی دوباره ازش استفاده بکنی(reuseble) هست. جدای اون بخاطر معماریه ioc میتونیم قابلیت dependency injection رو داشته باشیم (یعنی این تزریق وابستگی بخاطر وجود تایپ اسکریپته که امکان پذیره!) و بحث static type و auto complete هم که واضح هست چه کمک شایانی به خوانا بودن و بدون خطا بودن کدمون میکنه.

 

خب یکم از dependency injection (DI) بگیم

همانطور که میدونیم NestJs بر پایه کلس ها (class base) هستن. اما چرا؟

چون سیستم تزریق وابستگی باید از هر provider یا entity یا controller یک نمونه بسازه و بعد عملیات تزریق رو انجام بده، اما function ها قابل تزریق نیستن و دقیقا به همین دلیله که از class ها استفاده میکنیم! حالا بریم که پشت صحنه چجوری داره تزریق وابستگی کار میکنه

 

  1. در مرحله اول سیستم تزریق وابستکی
    از تمامی کلس هایی که قابل تزریق هستن (از دکوریتور هایی مانند Injectable استفاده شده) یک نمونه میسازه و برای کلس هایی که این قابلیتو نداره مقدار undefiend رو قرار میده (مثلا یک کلس رو تعریف کردیم ولی injectable نیست مثل dto ها!)
     
  2. در مرحله دوم نست جی اس با توجه به وابستگی های تعریف شده داخل ماژول های ایمپورت شده داخل appModule میاد وابستگی هارو به صورت درختی resolve میکنه (مثلا اگه userController به userService و userService به userEntity وابستس پس پشت صحنه از userController به userEntity میرسیم! و وقتی رسیدیم سیستم DI برای اطمینان از درست بودن وابستگیا این مسیر رو برعکس میره (یعنی وقتی به userEntity میرسه دوباره از userEntity به userController میرسه))
     
  3. تو مرحله سوم وقت تزریقه! میاد از هر چیزی که اونجا برای وابستگی اعلام شدرو تزریق میکنه، یک نمونه از هر کلس میسازه و تا آخر از همون یک نمونه در تمامی برنامه از همون استفاده میکنه!

    حالا سوال اصلی اینه نست چجوری میفهمه چه کلسیو به کجا تزریق کنه؟ درست حدس زدین، با استفاده از تایپ ها!. ینی وقتی توی تایپ اسکریپت یک سرویس داریم که از نوع userService هست، سیستم میره اون رو داخل provider های ماژول پیدا کنه، اگه پیداش نکرد ارور میده که نتونسته dependency هارو resolve کنه!

    حالا سوال بعدی اینه که چرا ترتیب داخلشون مهم نیست؟
    ینی چرا اهمیت نداره کدوم سرویسو اول لیست بزاریم؟
    درواقع اون توکن رو سرچ میکنه! بنابراین ترتیب مهم نیست و وجود اون توکن و اسم مهمه! 
     

(میگن اگه به یکی توضیح بدی خودت بیشتر میتونی بفهمی که چی داری میگی میدونم میدونم میدونم محیط، محیطه گیمه ولی بدلیل نبود اینترنت بین المللی عه)

جذاب بود...
ولی اون بخشی که گفتی " به اکسپرس ترجیح داده میشه " زیاد منطقی نبود 
نست جی اس بخوایم به زبون خودمونی بگیم یه لایه تمیز روی اکسپرس یا فستیفایه ( خودمون میتونیم انتخاب کنیم فریمورک پایمون چیه که دیفالتش اکسپرس هست )

در اخر هم بیلد بگیری اکسپرس یا فستیفای میگیری :)

 

نست هدفش اینه که توی تیم ها کار رو راحت کنه چون express بدون هیچ تمپلیت و استراکچر خاصی اجازه میده پروژه رو جلو ببری این بدون استراکچر بودن باعث میشه برای یه برنامه نویس سنیور express یه طلا بشه چون برنامه نویس سنیور میدونه باید چطوری کد بزنه که پروژه اسکیلبل باشه ولی یه برنامه نویس جونیور وقتی express رو بدی بهش اولش همه چی خوبه توسعه سریع و  راحت ولی یکمی پروژه جلو بره و حجم کدا بره بالا همه چی بهم میریزه و با یه استراکچر کثیف رو به رو میشیم! 

 

 

نکته ی جالبی هم که شاید بگم بد نباشه: 

تایمی که nestjs نبود ( یا تایمی که زیاد محبوب و شناخته شده نبود )  برنامه نویس های ارشد میومدن و برای اینکه پروژه خوب و تمیز پیش بره یکسری از چیز ها رو از بیس پیاده میکردن برای تیمشون یه جورای یه nestjs جمع و جور توسعه میدادن 
 

  • دوست دارم که 1

زنده ایم قسطی تو ایران

 

samcoder.png

 

%5B2%5Dsamcoder.png

لینک به دیدگاه
https://forum.arsacia.ir/topic/100381-my-experience/#findComment-1028525
به اشتراک گذاری در سایت های دیگر

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است!

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری
  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی، در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...