فراز و نشیبهای JavaScript در سال ۲۰۲۰
۲ اسفند ۱۳۹۹
![فراز و نشیبهای javascript در سال ۲۰۲۰](https://cms.liara.ir/wp-content/uploads/2021/02/the-state-of-javascript-in-2020.png)
نتیجه نظرسنجی سامانه stateofjs که از ۱۳۷ کشور و ۲۳۷۶۵ توسعهدهنده بهمنظور بررسی اکوسیستم زبان JavaScript جمعآوری شده بود در تاریخ ۲۵ دی ماه سال ۱۳۹۹ منتشر شد. در این نظرسنجی به کاربردها و نظرات افراد دربارهی ویژگیها، فناوریها، ابزارها و موارد دیگر موجود در اکوسیستم زبان JavaScript پرداخته شده است و ما در این مقاله بخشهای مهمی از آن را پوشش دادهایم تا بتوانید در سال جدید پروژههای خود را با متناسبترین ابزارهای موجود توسعه دهید.
فناوریهای محبوب اکوسیستم JavaScript در سال ۲۰۲۱
تکنولوژیهای پراستفاده جایگاه خود را حفظ کردهاند. همچنان TypeScript پراستفادهترین تکنولوژی گسترش یافته زبان JavaScript و در کنار آن React پراستفادهترین کتابخانه فرانتاند و Express پراستفادهترین فریمورک بکاند است. بنابراین اگر شما یک توسعهدهنده تازهکار وب باشید میتوانید روی این فناوریها حساب باز کنید.
بااینحال فناوریهایی را میتوانید در این نظر سنجی مشاهده کنید که در سال ۲۰۲۰ نیز مورد توجه زیادی قرار گرفتهاند:
Svelte
Svelte از React بهعنوان محبوبترین کتابخانه فرانتاند پیشی گرفت. برخلاف React که بایستی کتابخانهی آن را در ابتدای کدهای برنامه قرار دهیم، Svelte یک کامپایلر محسوب میشود که کدهای ما را به کدهای JavaScript کامپایل و بهینهسازی میکند.
درنتیجه bundle نرمافزاری سبکتر با عملکرد سریعتری در اختیار ما قرار داده میشود. همچنین Svelte با معرفی Sapper و Svelte Native بهسرعت درحال بلوغ در اکوسیستم خود است و میتوانیم آن را رقیب شایستهای برای React، Vue و Angular بدانیم.
Next.js
اگرچه بهطور کلی نباید این دو تکنولوژی با هم مقایسه شوند چونکه موارد استفادهی مختلفی دارند اما Next.js از Express بهعنوان محبوبترین فریمورک بکاند پیشی گرفته است. Next.js یک فریمورک SSR است که یک سایت اساتیک را برای کاربر در سمت سرور رندر میکند.
esbuild و Snowpack
esbuild و Snowpack از webpack بهعنوان محبوبترین build tools پیشی گرفتند. esbuild یک پکیج نرمافزاری است که با Golang توسعه داده شده و از این رو عملکرد سریعتری نسبت به webpack خواهد داشت. از طرف دیگر Snowpack رویکردی جدید را معرفی کرده که فقط یک بار هر ES module را در صورت وجود تغییر build میکند اما webpack با با هر تغییر، کل پروژه را build میکند.
esbuild و Snowpack هر دو بهطرز چشمگیری زمان توسعه و استقرار برنامه را با روشهای مختلف کاهش دادهاند.
قابلیتهای جدید زبان JavaScript
در این نظرسنجی نیز میزان پذیرش قابلیتهای جدید زبان JavaScript توسط توسعهدهندگان مورد بررسی قرار گرفته است. قابلیتهای nullish coalescing operator با ۴۵.۳%، optional chaining operators با ۶۶.۷% و Promise.allSettled()
با ۱۴.۷% رایها از ۲۳۷۶۵ نفری که در این نظرسنجی شرکت کرده بودند مورد پذیرش قرار گرفته است.
همچنین به این دلیل که این قابلیتها در همهی مرورگرهای اصلی، Node.js 14 و نسخههای بعدی آن پشتیبانی میشوند بنابراین زمان خوبی است که از آنها در پروژههای خود استفاده کنید.
Nullish coalescing operator
Nullish coalescing operator یک logical operator است که وقتی مقدار سمت چپ آن null یا undefined باشد مقدار سمت راست را return میکند. حال از این روش میتوانید برای تنظیم مقادیر پیشفرض برای متغیرهایی که ممکن است مقدار آنها null یا undefined باشد، استفاده کنید.
![قابلیت nullish coalescing operator](https://cms.liara.ir/wp-content/uploads/2021/02/nullish-coalescing-operator.png)
Optional chaining operator
این قابلیت به توسعهدهندگان امکان میدهد تا بدون نیاز به بررسی موجودیتها به nested objectها دسترسی پیدا کنند.
![قابلیت optional chaining operator](https://cms.liara.ir/wp-content/uploads/2021/02/optional-chaining-operator.png)
Promise.allSettled
این فانکشن در زمانی که همهی Promiseهای موجود resolve یا reject شده باشند، یک Promise را return میکند. سپس توسعهدهنده میتواند بررسی کند آیا Promiseها با موفقیت اجرا شدهاند یا خیر و به این صورت میتوان عملکردهایی مانند transactionها را مورد بررسی قرار داد.
![فانکشن promise.allSettled](https://cms.liara.ir/wp-content/uploads/2021/02/promise-allsettled-function.png)
جمعبندی
در سال گذشته تغییرهای زیادی در کتابخانههای JavaScript بهوجود آمده است. تکنولوژیهای تازهای مانند esbuild بهسرعت در حال رشد هستند و پروژههایی مانند Svelte درنهایت مورد توجه توسعهدهندگان قرار گرفته است. علاوهبراینها در ES2020 شاهد اضافه شدن چندین قابلیت مختلف هستیم که بسیاری مشکلهای توسعهدهندگان را برطرف کرده است.
منبع: https://medium.com/better-programming/the-state-of-javascript-in-2020-97b8bdfdfa20
توسعهدهندگان دربارهی ما چه میگویند
تجربه کار باliara_cloud@امروز خیلی خوب بود. یکی از سرویس هام رو منتقل کردم روش و راضیم. انقد سریع و جذاب کارم راه افتادم اصن باورم نمیشد! برعکس سرویس های PaaS دیگه با اون همه پیچیدگیشون. دمتون گرم
...
MohammadReza![](data:image/svg+xml;charset=utf-8,%3Csvg height='400' width='400' xmlns='http://www.w3.org/2000/svg' version='1.1'%3E%3C/svg%3E)
![liara testimonial]()
keikaavousi
بعد از بسته شدن @fandoghpaas و ناراحتی همهمون از اینکه یه سرویس خوب و صادق نمیتونه از پس هزینهها بر بیاد، سرویسم رو منتقل کردم به پاس لیارا (https://liara.ir @liara_cloud) . تجربه راحت و خوب. تفاوتهایی داشت که کمی کار میخواست ولی تا الان کاملا راضی.
jadi![](data:image/svg+xml;charset=utf-8,%3Csvg height='400' width='400' xmlns='http://www.w3.org/2000/svg' version='1.1'%3E%3C/svg%3E)
![liara testimonial]()
jadi
یه خسته نباشید باید به تصمیمliara_cloud@بگم،
بعد از چندین روز سرکله زدن با سرویس های مشابه بالاخره تصمیم گرفتم لیارا رو امتحان کنم و باور نمیشه ۱۰ دقیقه بیشتر وقت نبرد،
دمتون گرم.
Arch![](data:image/svg+xml;charset=utf-8,%3Csvg height='400' width='400' xmlns='http://www.w3.org/2000/svg' version='1.1'%3E%3C/svg%3E)
![liara testimonial]()
EbadiDev
واسه سرویس PaaS با اختلاف لیارا بهترین رابط کاربری داره و یکی از مزیتهای سرویس دیتابیسشون اینه که خودشون به صورت دورهای بکآپ میگیرن.
...
Ali Najafi![](data:image/svg+xml;charset=utf-8,%3Csvg height='400' width='400' xmlns='http://www.w3.org/2000/svg' version='1.1'%3E%3C/svg%3E)
![liara testimonial]()
me_ali_najafi
یکی از کارهای خوبی که جدیداً میکنم اینه که یه دیتابیس روی لیارا میسازم و به پروژه وصل میکنم اینطوری هم خونه و هم محل کار دیتابیس بروز رو دارم و راحت میتونم ادامه بدم کار روliara_cloud@
Navid![](data:image/svg+xml;charset=utf-8,%3Csvg height='80' width='80' xmlns='http://www.w3.org/2000/svg' version='1.1'%3E%3C/svg%3E)
![liara testimonial]()
1navid
عاشقliara_cloud@شدم درسته در حد AWS نیست ولی خب تجربه خوبی واسه پروژه های داخل ایران ارائه میده، میتونم رو CD هم اجراش کنم
Amir H Shekari![](data:image/svg+xml;charset=utf-8,%3Csvg height='400' width='400' xmlns='http://www.w3.org/2000/svg' version='1.1'%3E%3C/svg%3E)
![liara testimonial]()
vanenshi