مقاله‎‎ای ویژه طرف‌داران جاوااسکریپت و طراحان وب
راهنمای جامع چهارچوب‌های برتر Node.js (بخش دوم)
Node.js یک محیط اجرایی بر پایه موتور جاوااسکریپت V8 کروم است که برای اجرای اپلیکیشن‎های محیط دسکتاپ و سرور بهینه‎سازی شده است. Node.js از یک مدل ورودی/ خروجی non-blocking رویدادمحور استفاده می‎کند که با کمترین تأخیر و بیشترین میزان بازدهی نسبت به سرورهای رشته‎ای مثل Apache, IIS و سرور جاوای متعارف به درخواست‎ها پاسخ می‎دهد. هرچند شما می‎توانید تنها از طریق کدنویسی Node.js یک وب سرور یا اپلیکیشن را پیاده‎سازی کنید، اما یک فریم‎ورک می‎تواند میزان کدی را که باید بنویسید تا حد قابل ملاحظه‎ای کاهش دهد. در این راهنما، قصد داریم فریم‎ورک‎های در دسترس برای توسعه‎دهندگان Node.js را در دو بخش مجزا به شما معرفی کنیم. بخش نخست این راهنما را در شماره قبل مشاهده کردید و در این شماره بخش دوم و پایانی آن را می‌خوانید.

برای مطالعه قسمت اول این مقاله روی لینک زیر کلیک کنید

مطلب پیشنهادی

راهنمای جامع چهارچوب‌های برتر Node.js
ویژه طرف‌داران جاوااسکریپت و طراحان وب

فریم‎ورک‎های همه‌جانبه برای Node.js

Catberry.js

Catberry یک فریم‌ورک چندوجهی است که با استفاده از عناصر، معماری لایه داده Flux و رندرينگ موازی بهینه شده برای ساخت اپلیکیشن‎های یونیورسال از آن استفاده می‎شود. این نوع از اپلیکیشن‎ها از یک کد پایه یکسان در هر دو سمت سرور و کلاینت استفاده می‎کنند. Catberry هم‌زمان از SEO نیز پشتیبانی می‎کند. یک خزنده جست‌وجوگر یک صفحه کامل را از سرور دریافت می‎کند و کل محتوای اپلیکیشن از URL آن بازیابی می‎شود. 

Feathers

Feathers یک REST و لایه API بی‌درنگ برای اپلیکیشن‎های مدرن است. توسعه‌دهنده آن مدعی است می‎توانید از آن برای ساخت یک دقیقه‎ای نمونه‎های اولیه و ساخت یک روزه محصولات آماده و API REST استفاده کنید. البته چنین ادعایی تنها مختص به Feathers نیست.
از جمله ویژگی‎های برجسته Feathers این است که خدمات سازگاری را فراهم می‎کند که شما با استفاده از آن می‎توانید به تمام پایگاه‌های داده معروف متصل شوید و با یک رابط یکپارچه از هر نوعی که باشد از آن‌ها کوئری بگیرید. Feathers به طور خودکار API REST را برای تمام خدمات شما فراهم می‎کند و می‎تواند خطاهای مرتبط را نیز به کلاینت ارسال کند. Feathers برای عملکرد آنی از WebSockets پشتیبانی می‎کند و می‎توان از آن برای احراز هویت email/password, OAuth و Token (JWT) استفاده کرد. Feathers CLI نیز به شما امکان می‎دهد تا اپلیکیشن، کد پایگاه داده، تأیید صلاحیت و خدمات مشابه را توليد کنید.

Horizon

Horizon سکویی برای ساخت اپلیکیشن‎های بی‌درنگ است. این فریم‌ورک می‎تواند امکان تولید، استقرار و مدیریت یک اپلیکیشن کاربردی کامل یا اپلیکیشن‎های موبایل وب مبتنی بر جاوا اسکریپت را به‌سرعت فراهم کند. Horizon با یکپارچه شدن با Node.js به‌سادگی گسترش پیدا می‎کند و امکان ساخت اپلیکیشن‎های مدرن و پیچیده را فراهم می‎کند.
Horizon تحت RethinkDB ساخته شده و شامل چهار بخش مختلف است: سرور Horizon، کتابخانه کلاینت Horizon شامل یک سرور میانی که یک API/protocol ساده را برای اپلیکیشن‎ها فراهم می‎کند، Horizon CLI شامل یک کتابخانه کلاینت جاوا اسکریپت که پروتکل سرور Horizon را برای توسعه راحت API فراهم می‎کند و یک ابزار خط فرمان که به توسعه و استقرار چهارچوب این فریم‌ورک کمک می‎کند. Horizon در حال حاضر از چهار API تشکیل شده است: Subscribe که یک API استریم برای ساخت مستقیم اپلیکیشن‎های بی‌درنگ از مرورگر بدون نیاز به کدنویسی است. Auth که یک API برای اتصال به تأمین‌کنندگان سیستم احراز هویت مثل فیسبوک، گوگل و گیت‎هاب است. Identity که یک API برای فهرست‌بندی و مدیریت حساب‎های کاربری است و Permissions که یک مدل امنیتی است که به توسعه‌دهندگان اجازه می‎دهد تا از داده‎ها در مقابل دسترسی غیرمجاز محافظت کنند.

KeystoneJS

KeystoneJS یک سیستم مدیریت محتوا  (CMS)تحت Node.js و فریم‌ورک اپلیکیشن وب ساخته شده در وب سرور Express است که از طریق Mongoose به پایگاه داده MongoDB متصل می‎شود. Keystone ساخت وب‌سایت و اپلیکیشن را ساده‎تر می‎کند و به یک رابط کاربری خودکار مدیریتی مجهز است. ساده‎ترين راه برای شروع کار با Keystone استفاده از راه‌انداز Yeoman است. همان گونه که در فهرست 1 مشاهده می‌کنید.

$ npm install -g generator-keystone
$ yo keystone

فهرست 1

روش دیگر برای استفاده از Keystone در پروژه‎های موجود یا ساخت یک پروژه جدید (بدون Yeoman) به کار بردن عبارت keystone: “^0.3.9” در آرایه‎های وابسته فایل package.json شما و اجرای فرمان npm install از طریق ترمینال است. راه‌انداز yo در Keystone یک مدل کاربری، سیستم احراز هویت، سشن‎ها (که در صورت عدم نیاز می‎توانید آن‌ها را غیرفعال کنید)، مسیرها، میان‌افزار، قالب‎های Jade و رابط گرافیکی مدیریتی را فعال می‎کند. Keystone تمام جنبه‎های طراحی و ساخت سایت شما را در هر دو سمت کلاینت و سرور پوشش نمی‎دهد، اما شما می‎توانید از jQuery, Angular, React یا ماژول‎های CSS و هر نوع قالب Node.js پشتیبانی شده توسط Express نیز استفاده کنید. الگوهای رایج در KeystoneJS شامل وبلاگ، گالری عکس و فرم‎های تماس است.

شکل 1

مطلب پیشنهادی

10 ویژگی جدید و جذاب جاوااسکریپت برای عاشقان وب

MEAN.io

MEAN یک فریم‌ورک برای ساخت اپلیکیشن با MongoDB, Express, Angular و Node.js است. طراحی آن به ‌گونه‎ای انجام شده است تا شما بتوانيد به‌سرعت و سازماندهی شده توسعه یک اپلیکیشن وب مبتنی بر MEAN را با ماژول‎های مفیدی مثل Mongoose و Passport آغاز کنید. 
فریم‌ورک MEAN.io در اصل قصد دارد تا نقاط اتصال بین اجزای فریم‌ورک‎ها را مدیریت و مشکلات رایج یکپارچه‌سازی را برطرف کند. آخرین نسخه از MEAN شامل یک CLI برای راه‌اندازی، مدیریت و به‎روزرسانی اپلیکیشن‎های MEAN شما است.

MEAN.js

MEAN.js یک راهکار جاوا اسکریپت تمام و کمال برای ساخت سریع، افزایش کارایی و قابلیت نگهداری اپلیکیشن‎های وب با استفاده از MongoDB, Express, Angular و Node.js است. ایده ساخت آن برای برطرف کردن مشکلات رایج در اتصال این فریم‌ورک‎ها و کمک به توسعه‌دهندگان برای استفاده از شیوه‎های بهتر در زمان با اجزای رایج جاوا اسکریپت است. در حال حاضر سه کتاب و یک ویدیوی آموزشی درباره توسعه با MEAN.js موجود است.

Meteor

Meteor یک سکوی کامل برای توسعه اپلیکیشن است که امکان ساخت اپلیکیشن‎های موبایل و وب را تماماً با استفاده از کدهای جاوا اسکریپت به‌سادگی فراهم می‎کند. علاوه بر امکان ارسال HTML در اتصالات، Meteor داده را از سرور برای پردازش در کلاینت نیز ارسال می‎کند. همچنین، به غیر از اجرای مستقیم، Meteor می‎تواند با Angular و React نیز برای پشتیبانی از الگوی MVC یکپارچه شود. Meteor شبیه به Express است با این تفاوت که روی Node.js ساخته می‎شود و از قالب‎های Jade و Blaze نیز پشتیبانی می‎کند. Meteor به شما امکان می‎دهد تا به‌سرعت نمونه‎های اولیه از پروژه خود را آماده‌سازی کنید و کدهایی سازگار با سکو‎های مختلف (وب، اندرويد و iOS) تولید کنید. این فریم‌ورک با MongoDB یکپارچه می‎شود و از پروتکل داده توزیع شده استفاده می‎کند. در سمت کلاینت، Meteor به jQuery وابسته است و می‎توان آن را با هر نوع کتابخانه JavaScript UI استفاده کرد. Meteor توسطMeteor Development Group توسعه داده شده است.

Meatier

Meatier در اصل برای وارد کردن معماری کلی و قابلیت‎های Meteor به یک پروژه جزء‌محور در نظر گرفته شده است. برای مثال Meteor به‌شدت به MongoDB و Simple Schema گره خورده است، اما در عوض Meatier از RethinkDB و GraphQL استفاده می‎کند. Meteor سیستم اختصاصی خود را دارد و Meatier از Webpack استفاده می‎کند. کلاینت‎های Meatier به React وابسته هستند و سرورهای Meatier به Express و SocketCluster نیاز دارند. علاوه بر اختلافاتی که بین این دو وجود دارد، آنچه مسلم است این است که Meatier یک نسخه به‎روزرسانی شده و احتمالاً بهتر از طراحی‎های Meteor است.

Seneca

معماری‎های میکروسرویس بسیار مطرح هستند. چالش پیش روی ساخت اپلیکیشن‎هایی که از میکروسرویس‎ها استفاده می‎کنند اغلب به چگونگی پیوستن این میکروسرویس‎ها به یکدیگر مربوط می‎شود. Seneca یک راهکار ماژولار کارآمد برای متصل کردن میکروسرویس‎هایی است که مبتنی بر پیغام‎ها، تطبیق الگو، استقلال نقل و انتقال و اکوسیستم افزونه‎ها هستند که همگی تحت Node.js ساخته می‎شوند. توجه داشته باشید كه اگرچه شما می‎توانید Seneca را به API سرویس وب خود متصل کنید، اما نمی‎توان به آن به‌عنوان یک فریم‌ورک وب نگاه کرد.
پیغام‎های Seneca موضوعات JSON هستند و می‎توانند هر ساختار داخلی که مورد نظر شما است را داشته باشند. پیغام‎ها را می‎توان از طریق HTTP/S, TCP، صفحه پیغام، خدمات عضویت یا سایر نقل و انتقالات پشتیبانی شده ارسال کرد. شما به‌عنوان نویسنده یک سرویس Seneca تنها پیغام‎ها را به دنیای بیرون ارسال می‎کنید و نیازی ندارید که بدانید کدام سرویس‎ها آن‌ها را دریافت می‎کنند. برای دریافت پیغام‎ها شما الگوهای متناسب با سرویس خود را مشخص می‎کنید و Seneca (با کمی‎ تنظیمات که شما انجام می‎دهید) اطمینان حاصل می‎کند که هر پیغام فرستاده شده توسط دیگران که با این الگوها مطابقت دارد دریافت می‎شود. 

مطلب پیشنهادی

اکوسیستم Node.js چیست و چه قابلیت‎هایی دارد؟

SocketCluster

SocketCluster یک موتور سرویس سریع، HTTP گسترش‌پذیر و بی‌درنگ است که به شما اجازه می‎دهد خدمات لحظه‎ای، چندپردازشی را با استفاده از توان پردازنده‎های چندهسته‎ای ایجاد کنید. این فریم‌ورک محدودیت اجرای سرورهای Node.js به‌صورت تک‌رشته‎ای را برطرف می‎کند. SocketCluster همچنین می‎تواند از طریق Kubernetes به‌صورت میزبانی‎های چندگانه اجرا شود. SocketCluster از اتصالات مستقیم کلاینت سرور (مثل Socket.io) و ارتباطات گروهی از طریق انتشار و اشتراک کانال‎ها پشتیبانی می‎کند.

SocketStream

SocketStream فریم‌ورکی برای اپلیکیشن‎های وب بی‌درنگ است که از امکانات ارتباطی بین کلاینت و سرور WebSocket بهره می‎برد. SocketStream تمام HTML, CSS و کدهای سمت کلاینتی که اپلیکیشن شما در زمان اولین بازدید کاربر از سایت شما به آن نیاز دارد را ارسال می‎کند و تمام این داده‎ها در زمان اجرا در وضعیت تولید به طور خودکار فشرده خواهند شد. بعد از آن تمام داده‎های ارسال و دریافت شده اپلیکیشن از طریق WebSocket سامان‌دهی می‎شود. در حالت طبیعی این کار با فرمت JSON RPC انجام خواهد شد، اما SocketStream به شما اجازه می‎دهد مطابق با وظایف در دست انجام از پاسخ‌دهنده‎های درخواست مختلف استفاده کنید. پلاگین‎های SocketStream از فرم‌دهنده‎های کد تا افزونه‎های فریم‌ورک سمت کلاینت و پلاگین‎های توسعه رفتارمحور را شامل می‎شود. SocketStream برای ساخت اپلیکیشن‎های بی‌درنگ گزینه مناسبی است، اما برای ساخت وب‌سایت‎هایی که برای مقاصد سئو به وجود URL نیاز دارند چندان مناسب نیست.

فریم‌ورک‎های REST API برای Node.js

ActionHero

ActionHero یک API سرور چندوجهی با قابلیت کلاسترهای یکپارچه شده و وظایف تأخیری است. هدف ActionHero ساخت یک جعبه ابزار برای تولید API چند بار مصرف و گسترش‌پذیر است. کلاینت‎های متصل شده به سرور ActionHero می‎توانند از این API و محتوای استاتیک مصرف و با یکدیگر ارتباط برقرار کنند. ActionHero از امکانات پشتیبانی از کلاسترها، وظایف پس‌زمینه وغیره برخوردار است. ActionHero از وب کلاینت‎های HTTP/S، TCP (Telnet) و سوکت کلاینت‎های TLS پشتیبانی می‎کند و با وب‎سوکت کلاینت‎های HTTP/S سازگار است. 
سرورهای ActionHero می‎توانند هم‌زمان درخواست‎ها و وظایف را پردازش کنند (برای مثال، اقدامات تأخیری مثل ارسال ایمیل یا کارهای پس‌زمینه).  همچنین سرورهای ActionHero می‎توانند روی یک کلاستر (روی یک یا چند ماشین مختلف) اجرا شوند تا بتوانند بار ترافیک را بهتر اداره کنند. در راهنمای آموزشی ActionHero ساخت یک وبلاگ API و سایت، چت روم و یک سرور سفارشی که ارستریم فیلتر شده توییتر را به چت روم ارسال می‎کند آموزش داده می‎شود.

Frisby

Frisby یک فریم‌ورک آزمايش REST API است که تحت Node.js و Jasmine ساخته شده است. آزمون‎های Frisby با frisby.create آغاز شده و با get, post, put, delete یا head ادامه پیدا می‎کند و با toss خاتمه می‎یابد تا نتیجه آزمايش خصوصیات Jasmine تولید شود. Frisby از چندین ابزار کمکی‎ داخلی برای آزمایش بهره مي‌برد که از آن جمله می‎توان به expectStatus برای آزمایش ساده‎تر کدهای وضعیت HTTP، expectJSON برای آزمایش کلیدها و مقادیر JSON و expectJSONTypes برای آزمایش نوع مقادیر JSON اشاره کرد.

Restify

Restify یک ماژول Node.js است که به طور خاص برای فراهم کردن امکان ساخت سرویس‎های وب REST طراحی شده است. این فریم‌ورک برای ساخت اپلیکیشن‎های مرورگر در نظر گرفته نشده است؛ بنابراین، فاقد پشتیبانی از قالب‌سازی و رندرينگ موجود در Express است. در عوض شما این امکان را خواهید داشت که روی تعاملات HTTP و زمان تأخیر اپلیکیشن‎های خود کنترل کامل داشته باشید.

LoopBack

LoopBack یک فریم‌ورک قابل گسترش Node.js است که این امکان را برای شما فراهم می‎کند تا بدون نیاز به کدنویسی REST API داینامیک بسازید. می‎توان آن را به پایگاه‌های داده Oracle, MySQL, PostgreSQL, SQL Server, MongoDB, SOAP و سایر REST API دیگر متصل کرد. LoopBack به شما اجازه می‎دهد برای اپلیکیشن‎های موبایل از فایل سرویس‎ها و geolocation استفاده کنید و به‌سادگی اپلیکیشن‎های کلاینت مورد استفاده اندرويد، iOS و Angular SDK بسازید. IBM و گروه StrongLoop که ساخت LoopBack را برعهده دارند می‎گویند خود را متعهد به حفظ و بهبود پروژه منبع باز LoopBack می‎دانند.

Fortune.js

Fortune.js یک لایه انتزاعی پایگاه داده است که قابلیت‎هایی در سطح اپلیکیشن را برای Node.js و مرورگرهای وب فراهم می‎کند. این فریم‌ورک یک رابط مشترک برای پایگاه‌های داده و همین طور امکان به‎روزرسانی و یکپارچگی ارجاعی را فراهم می‎کند.  Fortune.js به‌ویژه برای نگهداری از پایگاه‌های داده ارتباطی دوطرفه، به‌اشتراک‌گذاری مدل‎های داده یکسان روی سرور و کلاینت و ساخت اپلیکیشن‎هایی که نیاز به گزينه‎های ذخيره‌سازی پرتابل دارند بسیار سودمند است. به طور پیش فرض داده در حافظه (و IndexedDB برای مرورگر) قرار خواهد گرفت. در صفحه پلاگین‎های Fortune.js قابلیت‎های اضافه دیگری مثل شبکه‌سازی (HTTP, WebSockets)، مبدل‎های پایگاه‌ داده و فرمت‎های سلسله مراتبی وجود دارد.

Nest

Nest یک فریم‌ورک وب برای Node.js است که به شما کمک می‎کند تا اپلیکیشن‎های کارآمد و گسترش‌پذیر را بسازید. این فریم‌ورک با TypeScript ساخته شده است (اما با ES6 نیز سازگار است) و از مفاهیم برنامه‌نویسی شی‌ءگرا استفاده می‎کند. Nest از Express و Socket.io استفاده می‎کند و IoC مخصوص به خود را دارد. ساختار فرامین Nest شبیه به Angular است با این تفاوت که از مسیرهای REST استفاده می‎کند.

برچسب: