طبق بررسی توسعه دهندگان وبسایت Stack Overflow در سال ۲۰۱۸، JavaScript با تشکر از اکوسیستم فریموورک همیشه در حال تکامل آن، برای یافتن بهترین راه حل برای مشکلات پیچیده و چالش برانگیز، یکی از مورد استفادهترین زبانهای برنامهنویسی است.
با این که JavaScript اکثر عمر خود را در ارتباط با توسعهدهی وب گذرانده است، اما در سالهای اخیر به نظر میرسد که استفاده از آن در حال گسترش یافتن است. این زبان نه تنها از frontend به backend منتقل شده است، بلکه ما کم کم میبینیم که برای چیزهای دیگری مانند یادگیری ماشین و واقعیت افزوده هم استفاده میشود.
تکامل JavaScript توسط فریموورکها رانده میشوند. با این که تعداد کمی از آنها رهبر هستند، اما تعداد زیادی ابزار کوچک دیگر وجود دارند که در سال ۲۰۱۹ میتوانند ارزش توجه شما را داشته باشند. حال بیایید نگاهی به آنها داشته باشیم.
قبل از این که به فریموورکهای JavaScript وارد شوید، نیاز به دانشی در زمینه خود این زبان میباشد و از این رو میتوانید دوره مربوطه را بر روی وبسایت راکت بگذرانید.
در بخش دوم همراه ما باشید...
فریموورکهای توسعهدهی برنامه دسکتاپ JavaScript
Electron
Electron توسط Cheng Zao، یک مهندس نرمافزار در GitHub ساخته شد. این فریموورک در ابتدا در سال ۲۰۱۳ و تحت عنوان Atom Shell منتشر شد، و سپس در سال ۲۰۱۵ به Electron تغییر نام یافت. Electron توسعه دهندگان وب را قادر میسازد تا از دانش فعلی خود استفاده کنند و یک سورس کد بسازند، و سپس آن را برای هر پلتفرم به صورت جداگانه منتشر کنند. چندین برنامه معروف وجود دارند که با استفاده از Electron ساخته شدهاند؛ مانند Slack، Skype برای لینوکس، Simplenote، Visual Studio Code و برخی دیگر.
یک برنامه Electron از سه کامپوننت تشکیل میشود: موتور وب Chromium، یک تفسیر کننده Node.js و سورس کد برنامه شما. موتور وب Chromium مسئویل رندر کردن رابط کاربری است. تفسیر کننده Node.js، جاوااسکریپت را اجرا میکند و دسترسی به امکانات سیستم عامل مانند filesystem، شبکه، عملکردهای دسکتاپ بومی و... که در دسترس موتور Chromium نیستند را برای برنامه شما فراهم میکند. سورس کد برنامه معمولا ترکیبی از JavaScript، HTML و CSS است.
۷ اپلیکیشن معروف دسکتاپ ساخته شده با فریموورک Electron
شما همچنین میتوانید با استفاده از دوره آموزش پروژه محور Electron کار با electron را فرا بگیرید
فریموورکهای یادگیری ماشین JavaScript
Tensorflow.js
گوگل در همایش TensorFlow Dev Summit 2018، پیادهسازی جاواسکریپت از TensorFlow، فریموورک یادگیری ماشین آنها که TensorFlow.js نام دارد را منتشر کرد. این فریموورک جانشین deeplearn.js میباشد، که در سال ۲۰۱۷ منتشر شد و حال تحت عنوان «هسته TensorFlow.js» نامگذاری شده است. تیم پشت آن اخیرا پیوستگیهای Node.js را برای TensorFlow.js معرفی کردند، و حال کد JavaScript مشابه هم در مرورگر و هم در Node.js کار خواهد کرد.
TensorFlow از چهار لایه از جمله WebGL API برای عملیاتهای عددی که توسط GPU پشتیبانی میشوند، مرورگر وب برای تعاملات کاربر، و دو اِیپیآی: Core و Layers تشکیل میشود. API سطح پایین Core، با کتابخانه deeplearn.js قدیمی تطابق درد، که عملیاتهای جبری و خطی شتاب داده شده را انجام میدهد، و اِیپیآی eager را برای تفکیک خودکار فراهم میکند. API سطح بالای Layers برای ساخت مدلهای یادگیری ماشین بر پایه Core استفاده میشود.
Brain.js
Brain.js یک کتابخانه شبکه عصبی است که در JavaScript نوشته شده است، و ادامه کتابخانه brain میباشد که میتوانند به همراه Node.js یا در مرورگر استفاده شود. این کتابخانه روند ساخت و آموزش شبکه عصبی را با به کارگیری JavaScript و محدود کردن API به فقط چند فراخوانی متد و گزینه، سادهسازی میکند. این کتابخانه انواع مختلف شبکه را برای عملیاتهای مختلف به همراه دارد.
فریموورکهای واقعیت افزوده و واقعیت مجازی JavaScript
React 360
در سال ۲۰۱۷، فیسبوک و Oculus به همراه یکدیگر React VR را معرفی کردند، که در سال اخیر تحت عنوان React 360 اصلاح شده، و مجددا نامگذاری شد. این نسخه بهبود یافته، طرح رابط کاربری را در فضای سه بعدی سادهسازی میکند و از React VR سریعتر است. React 360 که بر پایه React ساخته شده است و آن را پیشتر مورد بحث قرار دادیم، یک کتابخانه JavaScript است که توسعه دهندگان را قادر میسازد تا رابطهای سه بعدی و واقعیت مجازی بسازند. این کتابخانه توسعه دهندگان را قادر میسازد تا از ابزار و مفاهیم آشنا برای ساخت تجربیات ۳۶۰ درجه بر روی وب استفاده کنند.
یک برنامه که با استفاده از React 360 ساخته شده است، از دو قطعه تشکیل میشود: برنامه React شما و runtime که کامپوننتها را به عناصر سه بعدی بر روی صفحه تبدیل میکند. مفهوم «تقسیمبندی نقشها» مشابه React Native است. از آنجایی که مرورگرهای وب single-thread هستند، کد برنامه از کد مربوط به رندر کردن جدا شده است تا از هرگونه رفتار مسدود کننده در برنامه جلوگیری کند. با اجرای کد برنامه در یک زمینه جداگانه، حلقه رویداد میتواند به طور مداوم در یک نرخ فریم بالا بروزرسانی شود.
AR.js
AR.js توسط Jerome Etienne در سال ۲۰۱۷ با هدف پیادهسازی واقعیت افزوده به صورت موثر بر روی وب توسعه داده شد. در حال حاضر AR.js بهرهوری ۶۰ فریم بر ثانیه را فراهم میکند، که برای یک راه حل بر پایه وب و متن باز، بد نیست. این کتابخانه از پروژههایی مانند three.js، ARToolKit 5، emscripten و Chromium الهام گرفته شده است.
AR.js نیازمند WebGL، یک API گرافیک سه بعدی برای عنصر HTML5 Canvas و WebRTC، مجموعهای از APIها و پروتکلهای مرورگر میباشد که ارتباطات realtime را برای صدا، تصویر و دادهها در مرورگرهای وب و برنامههای بومی مقدور میسازند. AR.js با بهرهبری از ویژگیهای موجود در ARToolKit و A-Frame، توسعهدهی واقعیت افزوده برای وب را تبدیل به یک روند ساده میکند که میتواند توسط کدنویسان تازهکار هم پیادهسازی شود.
فریموورکهای جدید و در حال ظهور JavaScript
Gatsby.js
سازنده Gatsby یعنی Kyle Mathews، در سال ۲۰۱۷ این استارتآپ را رها کرد و به صورت تمام وقت بر روی پروژه جانبی خود تمرکز نمود: Gatsby.js و Typography.js. Gatsby.js در ابتدا در سال ۲۰۱۶ منتشر شد و اولین نسخه آن در سال ۲۰۱۷ به بیرون آمد. Gatsby.js یک مولد وبسایت مدرن برای React.js میباشد، که یعنی هر چیزی در Gatsby با استفاده از کامپوننتها ساخته میشود. با Gatsby، شما میتوانید وبسایتها / وباپلیکیشنهای دینامیک و استاتیک، از وبلاگهای ساده گرفته تا وبسایتهای تجارت الکترونیک و داشبوردهای کاربران را بسازید.
Gatsby چندین منبع دیتابیس مانند فایلهای Markdown، یک CMS بدون head مانند Cotentful یا WordPress، یک اِیپیآی REST یا GraphQL را پشتیبانی میکند که میتوانید از طریق GraphQL آنها را یکی کنید. Gatsby همچنین کارهایی مانند تقسیمبندی کد، بهینهسازی تصویر، استایلهای حیاتی خطی، lazy-loading و پیش دریافت منابع را با خودکارسازی آنها آسانتر میکند.
Next.js
Next.js توسط ZEIT ساخته شده، و در سال ۲۰۱۶ متن باز شد. Next.js که بر پایه React، Webpack و Babel ساخته شده است، یک فریموورک JavaScript کوچک میباشد که رندر کردن سمت سرور برنامههای React به صورت آسان را ممکن میسازد. Next.js امکاناتی مانند تقسیمبندی کد خودکار، مسیریابی کلاینت ساده، محیط توسعهدهی بر پایه Webpack که HMR را پشتیبانی میکند و... را فراهم مینماید. Next.js در هدف دارد تا به توسعه دهندگان کمک کند که برنامههای React را به صورت isomorphic بسازند، تا یک منطق رندر کردن مشابه بتواند هم برای رندر کردن سمت سرور و هم سمت کاربر استفاده شود.
Next.js اساسا شما را قادر میسازد تا یک برنامه React را بنویسید، در حالیکه SSR و مواردی مانند تقسیمبندی کد برای شما انجام میشوند. این فریموورک دو حالت رندر کردن سمت سرور را پشتیبانی میکند: خروجیگیری عمدی و استاتیک. خروجیگیری عمدی یعنی برای هر درخواست، یک صفحه منحصر به فرد رندر میشود. این ویژگی برای وباپلیکیشنهایی که به شدت دینامیک هستند و در آنها محتویات خیلی تغییر میکنند، یک وضعیت login دارند و... مناسب است. این حالت نیازمند داشتن یک سرور Node.js در حال کار است. خروجیگیری استاتیک تمام صفحات را از پیش به فایلهای .html رندر میکند و آنها را با استفاده از هر سرور فایلی تحویل میدهد. این حالت نیازی به هیچگونه سرور Node.js ندارد و HTML مربوطه در هر جایی میتواند اجرا شود.
Nuxt.js
Nuxt.js در اصل توسط برادران Chopin، یعنی Alexandre و Sebastian ساخته شده و در سال ۲۰۱۶ منتشر شد. در ژانویه ۲۰۱۸، این فریموورک به نسخه 1.0 آماده تولید بروزرسانی شد و توسط یک جامعه فعال پشتیبانی شد. Nuxt.js یک فریموورک سطح بالاتر است که از Next.js الهام گرفته شده، و بر پایه اکوسیستم Vue.js پروژهها را میسازد و توسعهدهی برنامههای Vue.js جهانی یا تک صفحه را سادهسازی میکند.
Nuxt.js در اعماق خود از Webpack به همراه vue-loader و babel-loader برای bundle کردن، تقسیمبندی کد و کاهش آن استفاده میکند. یکی از منفعتهای استفاده از Nuxt.js این است که یک دستور تولید Nuxt را فراهم میکند، و در نتیجه یک نسخه کاملا استاتیک از برنامه Vue شما را با استفاده از سورس کد مشابه تولید میکند. به علاوه آن، Nuxt.js امکاناتی را برای توسعهدهی میانن سمت کلاینت و سمت سرور مانند دادههای ناهمگام، میانافزارها، طرحها و... فراهم مینماید.
NestJS
NestJS توسط Kamil Mysliwiec ساخته شده، و در سال ۲۰۱۷ منتشر شد. NestJS، فریموورکی برای ساخت برنامههای سمت سرور Node.js موثر، قابل اعتماد و مقیاسپذیر است. NestJS بر پایه TypeScript و JavaScript (ES6, ES7, ES8) پروژهها را میسازد و به شدت از Angular الهام گرفته شده است.
NestJS در اعماق خود از Express استفاده میکند، و همچنین با محدودهای عظیم از کتابخانهها مانند Fastify سازگار است. NestJS برای اکثر چکیدهسازیهای خود، از انعکاسات دادههایی که کلاسها و TypeScript فراهم میکنند، بهره میبرد. NestJS مفاهیمی مانند guardها، pipeها و interceptorها، و همچنین پشتیبانی داخلی برای transpportهای دیگر مانند WebSocketها و gRPC را به همراه دارد.
اینها، برخی از گزینههای مورد علاقه من از میان تعداد زیادی از فریموورکهای JavaScript بودند. مطمئنا نیازی نیست که در همه آنها متخصص باشید. با آنها بازی کنید، اسناد آنها را بخوانید و یک دید کلی از امکانات آنها داشته باشید. قبل از این که شروع به استفاده از یک فریموورک نمایید، میتوانید برای چیزهایی مانند مشکلاتی که فریموورک مورد نظر رفع میکند، هر فریموورک دیگری که کار مشابهی را انجام میدهد، این که با نیازمندیهای پروژه شما تطابق دارد یا نه، این فریموورک برای چه نوع پروژههایی ایدهآل است و... نگاه داشته باشید. اگر این فریموورک برای شما مناسب است، سعی کنید با آن پروژهای را بسازید.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید