MiLo ارسال شده در January 19 اشتراک گذاری ارسال شده در January 19 خب تو این پست میخوایم راجب فریمورک NestJs صحبت کنیم نست جی اس یک فریمورک بک اندیه که با استفاده از حداکثر قدرت تایپ اسکریپت قابلیت های خاصی رو به خودش اضافه کرده و روز به روز در حال محبوب شدنه و به اکسپرس ترجیح داده میشه. میخوایم باهم دیگه چندتا ویژگی خاصشو ببینیم. تزریق وابستگی (dependency injection) : نست جی اس میاد و با استفاده از تزریق پرووایدر ها (providers) و ... به ماژوال ها جهت مدیریت دپندنسی های یک ماژول، میاد تمامی وابستگی ها و ابزارایی که یک ماژول نیاز داره رو بهش میده استفاده از حداکثری قدرت تایپ اسکریپت : این جمله به چه معنیه؟ ما توی اکسپرس هم میتونیم از تایپ اسکریپت استفاده کنیم، اینجا استفاده حداکثری ازش چه معنیی میده؟ توی نست چون همه کار ها با استفاده از دکوریتور(decorator) ها انجام میشه، به کدتون این قابلیت رو میده که بعدا بتونی دوباره ازش استفاده بکنی(reuseble) هست. جدای اون بخاطر معماریه ioc میتونیم قابلیت dependency injection رو داشته باشیم (یعنی این تزریق وابستگی بخاطر وجود تایپ اسکریپته که امکان پذیره!) و بحث static type و auto complete هم که واضح هست چه کمک شایانی به خوانا بودن و بدون خطا بودن کدمون میکنه. خب یکم از dependency injection (DI) بگیم همانطور که میدونیم NestJs بر پایه کلس ها (class base) هستن. اما چرا؟ چون سیستم تزریق وابستگی باید از هر provider یا entity یا controller یک نمونه بسازه و بعد عملیات تزریق رو انجام بده، اما function ها قابل تزریق نیستن و دقیقا به همین دلیله که از class ها استفاده میکنیم! حالا بریم که پشت صحنه چجوری داره تزریق وابستگی کار میکنه در مرحله اول سیستم تزریق وابستکی از تمامی کلس هایی که قابل تزریق هستن (از دکوریتور هایی مانند Injectable استفاده شده) یک نمونه میسازه و برای کلس هایی که این قابلیتو نداره مقدار undefiend رو قرار میده (مثلا یک کلس رو تعریف کردیم ولی injectable نیست مثل dto ها!) در مرحله دوم نست جی اس با توجه به وابستگی های تعریف شده داخل ماژول های ایمپورت شده داخل appModule میاد وابستگی هارو به صورت درختی resolve میکنه (مثلا اگه userController به userService و userService به userEntity وابستس پس پشت صحنه از userController به userEntity میرسیم! و وقتی رسیدیم سیستم DI برای اطمینان از درست بودن وابستگیا این مسیر رو برعکس میره (یعنی وقتی به userEntity میرسه دوباره از userEntity به userController میرسه)) تو مرحله سوم وقت تزریقه! میاد از هر چیزی که اونجا برای وابستگی اعلام شدرو تزریق میکنه، یک نمونه از هر کلس میسازه و تا آخر از همون یک نمونه در تمامی برنامه از همون استفاده میکنه! حالا سوال اصلی اینه نست چجوری میفهمه چه کلسیو به کجا تزریق کنه؟ درست حدس زدین، با استفاده از تایپ ها!. ینی وقتی توی تایپ اسکریپت یک سرویس داریم که از نوع userService هست، سیستم میره اون رو داخل provider های ماژول پیدا کنه، اگه پیداش نکرد ارور میده که نتونسته dependency هارو resolve کنه! حالا سوال بعدی اینه که چرا ترتیب داخلشون مهم نیست؟ ینی چرا اهمیت نداره کدوم سرویسو اول لیست بزاریم؟ درواقع اون توکن رو سرچ میکنه! بنابراین ترتیب مهم نیست و وجود اون توکن و اسم مهمه! (میگن اگه به یکی توضیح بدی خودت بیشتر میتونی بفهمی که چی داری میگی میدونم میدونم میدونم محیط، محیطه گیمه ولی بدلیل نبود اینترنت بین المللی عه) لینک به دیدگاه https://forum.arsacia.ir/topic/100381-my-experience/ به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری...
Integer ارسال شده در January 19 اشتراک گذاری ارسال شده در January 19 ممنون دوست من عالی بود... پ.ن: اینترنتا داره کم کم وصل میشه و فعلا سایت های آسیایی میارن... احتمالا تا فردا سایت های بیشتری فعال بشن (مثلا اروپایی و آمریکایی) 1 NO Thing to DO :My Account :My Brothers لینک به دیدگاه https://forum.arsacia.ir/topic/100381-my-experience/#findComment-1028368 به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری...
samcoder ارسال شده در January 19 اشتراک گذاری ارسال شده در January 19 ۱ ساعت قبل، 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 ها استفاده میکنیم! حالا بریم که پشت صحنه چجوری داره تزریق وابستگی کار میکنه در مرحله اول سیستم تزریق وابستکی از تمامی کلس هایی که قابل تزریق هستن (از دکوریتور هایی مانند Injectable استفاده شده) یک نمونه میسازه و برای کلس هایی که این قابلیتو نداره مقدار undefiend رو قرار میده (مثلا یک کلس رو تعریف کردیم ولی injectable نیست مثل dto ها!) در مرحله دوم نست جی اس با توجه به وابستگی های تعریف شده داخل ماژول های ایمپورت شده داخل appModule میاد وابستگی هارو به صورت درختی resolve میکنه (مثلا اگه userController به userService و userService به userEntity وابستس پس پشت صحنه از userController به userEntity میرسیم! و وقتی رسیدیم سیستم DI برای اطمینان از درست بودن وابستگیا این مسیر رو برعکس میره (یعنی وقتی به userEntity میرسه دوباره از userEntity به userController میرسه)) تو مرحله سوم وقت تزریقه! میاد از هر چیزی که اونجا برای وابستگی اعلام شدرو تزریق میکنه، یک نمونه از هر کلس میسازه و تا آخر از همون یک نمونه در تمامی برنامه از همون استفاده میکنه! حالا سوال اصلی اینه نست چجوری میفهمه چه کلسیو به کجا تزریق کنه؟ درست حدس زدین، با استفاده از تایپ ها!. ینی وقتی توی تایپ اسکریپت یک سرویس داریم که از نوع userService هست، سیستم میره اون رو داخل provider های ماژول پیدا کنه، اگه پیداش نکرد ارور میده که نتونسته dependency هارو resolve کنه! حالا سوال بعدی اینه که چرا ترتیب داخلشون مهم نیست؟ ینی چرا اهمیت نداره کدوم سرویسو اول لیست بزاریم؟ درواقع اون توکن رو سرچ میکنه! بنابراین ترتیب مهم نیست و وجود اون توکن و اسم مهمه! (میگن اگه به یکی توضیح بدی خودت بیشتر میتونی بفهمی که چی داری میگی میدونم میدونم میدونم محیط، محیطه گیمه ولی بدلیل نبود اینترنت بین المللی عه) جذاب بود... ولی اون بخشی که گفتی " به اکسپرس ترجیح داده میشه " زیاد منطقی نبود نست جی اس بخوایم به زبون خودمونی بگیم یه لایه تمیز روی اکسپرس یا فستیفایه ( خودمون میتونیم انتخاب کنیم فریمورک پایمون چیه که دیفالتش اکسپرس هست ) در اخر هم بیلد بگیری اکسپرس یا فستیفای میگیری نست هدفش اینه که توی تیم ها کار رو راحت کنه چون express بدون هیچ تمپلیت و استراکچر خاصی اجازه میده پروژه رو جلو ببری این بدون استراکچر بودن باعث میشه برای یه برنامه نویس سنیور express یه طلا بشه چون برنامه نویس سنیور میدونه باید چطوری کد بزنه که پروژه اسکیلبل باشه ولی یه برنامه نویس جونیور وقتی express رو بدی بهش اولش همه چی خوبه توسعه سریع و راحت ولی یکمی پروژه جلو بره و حجم کدا بره بالا همه چی بهم میریزه و با یه استراکچر کثیف رو به رو میشیم! نکته ی جالبی هم که شاید بگم بد نباشه: تایمی که nestjs نبود ( یا تایمی که زیاد محبوب و شناخته شده نبود ) برنامه نویس های ارشد میومدن و برای اینکه پروژه خوب و تمیز پیش بره یکسری از چیز ها رو از بیس پیاده میکردن برای تیمشون یه جورای یه nestjs جمع و جور توسعه میدادن 1 زنده ایم قسطی تو ایران لینک به دیدگاه https://forum.arsacia.ir/topic/100381-my-experience/#findComment-1028525 به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری...
ارسالهای توصیه شده
برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید
برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید
ایجاد یک حساب کاربری
برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است!
ثبت نام یک حساب کاربری جدیدورود به حساب کاربری
دارای حساب کاربری هستید؟ از اینجا وارد شوید
ورود به حساب کاربری