مقالات و آموزشمهندسی نرم افزار

راهنمای جامع چهارچوب‌های برتر Node.js

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

در ابتدا کار را با فریم‎ورک‎های مینیمالیستی شبیه Sinatra مثل Express آغاز می‎کنیم و به‌سمت فریم‎ورک‎های مستقل‎تر شبیه Rails مثل Sails.js پیش خواهیم رفت. در انتها به سراغ فریم‎ورک‎های کاملاً مستقل با کتابخانه‎های پایدار مثل Meteor خواهیم رفت. سرانجام، فریم‎ورک‎های REST API از قبیل LoopBack و چند کتابخانه دیگر که برای اهدافی خارج از دسته‌بندی اصلی ما قرار دارد (مثل ORM، IoT و تولید سایت‌های ایستا) را بررسی خواهیم کرد. توجه داشته باشید که این طبقه‌بندی‎ها به طور کامل از هم جداسازی نشده‎اند. چندین فریم‎ورک وجود دارد که می‎توان آن‌ها را متعلق به چند طبقه‎بندی دانست. پروژه‎های Node.js MVC بیشتری نیز وجود دارد که در فهرست ما گنجانده شده‎اند. هدف ما در معرفی این فریم‎ورک‎ها این است که بتوانید پروژه‎هایی را که ممکن است بتواند در زمان شما صرفه‌جویی کند را شناسایی کنید.

فریم‎ورک‎های MVC برای Node.js

MVC (سرنام Model-View-Controller) یک پارادایم در نظر گرفته شده برای پیکربندی شفاف عملکرد یک اپلیکیشن دسکتاپ یا وب است. مدل (Model) ساختار داده‎های پایه را مدیریت می‎کند.
نمایه (View) آن چیزی که به کاربر نشان داده می‎شود را مدیریت می‎کند و کنترل‎کننده (Controller) عکس‎العملی که در پاسخ به درخواست کاربر صادر می‎شود را مدیریت می‎کند. Rails یک فریم‎ورک وب MVC محور کامل است که در سال ۲۰۰۴ توسط دیوید هینمایر هنسون ساخته شد تا امکان ایجاد حضور وب در Ruby را فراهم کند. Rails فرض می‎کند که شما از یک مرکز داده استفاده می‎کنید و در پیکربندی مقادیر و مقیاس‎ها را به‌خوبی لحاظ کرده‎اید. فریم‎ورک‎های Node.js MVC شبیه Rails همان‎هایی هستند که از تمام قابلیت‎ها برخوردارند. Sinatra یک فریم‎ورک وب MVC محور با امکانات پایه و کم‌اهمیت‎تر است که در سال ۲۰۰۷ توسط بلیک میزرانی ساخته شد و در حال حاضر توسط کونستانتین هاسه به کار خود ادامه می‎دهد. Sinatra رویکردی متفاوت از Rails دارد و تنها شامل چیزهایی است که شما برای ساخت یک اپلیکیشن وب نیاز دارید و اساساً راه را برای قرار دادن اپلیکیشن شما در وب توسط یک DSL (سرنام Domain Specific Language) روی یک لایه Rack هموار می‎کند. Rack یک لایه انتزاعی مبتنی بر Node.js EventEmitter است که راهی ساده را برای برخورد با پشتیبانی از کلاستر فراهم می‎کند. فریم‎ورک‎های Node.js MVC به شما اجازه می‎دهند در موارد لزوم اجزایی را به آن اضافه کنید. خیلی از فریم‎ورک‎های Node.js MVC شبیه Sinatra کار پیکربندی مقادیر را نیز انجام می‎دهند. به همین دلیل، متمایز کردن آن‌ها با فریم‎ورک‎های شبیه Rails همیشه هم به‌وضوح قابل انجام نیست.

فریم‎ورک‎های MVC شبیه Sinatra برای Node.js

Diet

Diet خود را یک فریم‎ورک وب Node.js کوچک و ماژولار می‎داند که برای ساخت سریع اپلیکیشن‎ها و API گسترش‎پذیر مناسب است. یک سرور پایه Diet بسیار شبیه به یک سرور پایه Express است.

Create an app//
var server = require(‘diet’)
()var app = server
app.listen(‘http://localhost:8000’)

” When http://localhost:8000/ is requested, respond with “Hello World//
}($)app.get(‘/’, function
end(‘Hello World!’).$
({

فهرست ۱

Diet از ساختاری برخوردار است که بدون نیاز به هرگونه ماژول یا پیکربندی اضافی از میزبانی مجازی پشتیبانی می‎کند. سرور Diet از توابع به‌عنوان سرورهای مجازی استفاده می‎کند و کافی است از طریق پورت‎های مختلف به آن‌ها دسترسی پیدا کنیم. مسیریابی در Diet نه‌تنها با توابع ناشناس مثل ()app.get در فهرست ۱ اداره می‎شود، بلکه می‎توان این کار را از طریق یک مسیر middleware همانند فهرست ۲ نیز انجام داد.

 Register middleware functions for the upload path//
app.post(‘/upload/picture’, upload, crop, save, finish)

فهرست ۲

Node.js در زمان ساخت یک سرور HTTP(s) با استفاده از () http.createServer به طور پیش‌فرض از دو نشان‎وند request و response برخوردار است. Diet این دو مقدار را به یک مقدار تبدیل می‎کند که توسط علامت $ ارائه می‎شوند. در فهرست ۱ در ()app.get شما مشاهده می‎کنید که تنها یک مقدار در نشان‌وند این تابع که درخواست‌های get را در مسیر ریشه اداره می‎کند وجود دارد. Diet از ماژول‎های Node.js نیز پشتیبانی می‎کند و می‎تواند از آن‌ها به‌عنوان middleware استفاده کند.

Express

Express یک فریم‎ورک اپلیکیشن وب Node.js مختصر و انعطاف‎پذیر است که برای ساخت صفحات اپلیکیشن‎های وب مجموعه‎ای از قابلیت‎های قدرتمند را ارائه می‎کند. Express API اپلیکیشن‎های وب، درخواست‎ها و پاسخ‎های HTTP، مسیریابی و middleware را مدیریت می‎کند. از نسخه Express 4.x میان‎افزارهای پشتیبانی شده برای Express در تعدادی مخزن جداگانه قرار گرفته است که فهرست آن در مخزن Connect قرار دارد. چندین فورک و افزونه برای Express در نظر گرفته شده است که شامل Locomotive, Hapi و Koa است. Koa توسط یکی از مشارکت‌کنندگان اصلی Express ساخته شده است. Express نسبت به سایر فریم‎ورک‎ها از اجتماع و گروه‎های پشتیبانی بزرگ‌تری برخوردار است و با خیلی از ابزارها و فریم‎ورک‎های دیگر برای ساخت وب سرورها در Node.js ترکیب می‎شود.

 create an express application//

const express = require(‘express’)
()const app = express

}app.get(‘/‘, function (req, res)
res.send(‘Hello world!’)
({

} () app.listen(3000, function
console.log(‘Example app listening on port 3000!)
({

فهرست ۳

Flatiron

Flatiron بخشی از مجموعه ابزار Nodejitsu Node است. نویسندگان این فریم‎ورک آن را برای دو منظور در نظر گرفته‎اند. ابتدا، یک ابتکار عمل برای ساخت مجموعه‎ای از ابزارهای جدا شده با کیفیت و عملکرد بالا. دوم، یک فریم‎ورک توسعه اپلیکیشن وب کامل که با گردآوری این ابزار در کنار یکدیگر توسعه اپلیکیشن‎های وب را ساده‎تر کند. Flatiron به این دلیل در دسته فریم‎ورک‎های شبیه Sinatra قرار گرفته که تمام کاری که شما برای استفاده از آن در یک وب سرور باید انجام دهید این است که درخواست (require) را مشخص کنید، یک اپلیکیشن تعریف کنید، از پلاگین‎های http استفاده کنید، چند مسیر تنظیم و اپلیکیشن را آغاز کنید.
سایر اجزای این مجموعه نیز کارایی Flatiron را افزایش می‎دهند. برای مثال Broadway یک پلاگین ساده API را ارائه می‎کند که می‎تواند جایگزینی برای معکوس کردن کنترل ثبت نام استفاده شده توسط سایر فریم‎ورک‎های Node MVC باشد. Union یک کرنل میانی برای بافر و استریم است که با Connect سازگار است. Union بخشی است که پلاگین http را ارائه می‎کند.

 create a flatiron application//

.var flatiron = require(‘flatiron’)
app = flatiron.app;

;app.use(flatiron.plugins.http)

}() app.router.get(‘/‘, function
;this.res.writeHead(200, { ‘Content-Type’: ‘text/plain’ })
;this.res.end(‘Hello world!\n’)
;({

;app.start(8080)

فهرست ۴

Hapi

Hapi یک فریم‎ورک با امکانات استفاده و پیکربندی ساده است که از اعتبارسنجی ورودی‎ها، کش، احراز هویت و سایر امکانات ضروری برای ساخت یک وب‎سایت و خدمات تحت وب پشتیبانی می‎کند. Hapi توسعه‌دهندگان را قادر می‎سازد تا از طریق رویکردهای تمام ماژولار و سفارشی روی نوشتن اپلیکیشن‎های چند بار مصرف تمرکز کنند. Hapi توسط آزمایشگاه‎های والمارت توسعه پیدا کرد و یک انتخاب ایده‎آل برای گروه‎ها و پروژه‎های بزرگ است. Hapi در اصل به‌عنوان بخشی از Express ساخته شد، اما بعد کار خود را به‌صورت مستقل ادامه داد. همان گونه که سازندگان آن اعلام می‎کنند، Hapi با این شعار ساخته شد که «پیکربندی بهتر از کدنویسی است و این منطق تجاری باید از لایه انتقال جدا باشد». در مثال زیر، مشاهده می‎کنید که پیکربندی مسیرهای سرور چقدر واضح و مشخص در کد قرار گرفته است.

 create a hapi server//

;var Hapi = require(‘hapi’)
;var server = new Hapi.Server(3000)

[)server.route
{
’,method: ‘GET
’,path: ‘/api/items
}handler: function(request, reply)
;reply(‘Get item id’)
{
,{
}
’,method: ‘GET
’,path: ‘/api/items/{id}
}handler: function(request, reply)
reply(‘Get item id: ’ + request.params.id);
{
,{

فهرست ۵

Koa

Koa یکی از جدیدترین فریم‎ورک‎های وب است که توسط گروه سازنده Express طراحی شده است، اما مستقل از کدهای Express کار می‎کند. هدف از ساخت Koa امکان ایجاد اپلیکیشن‎های وب و API کوچک‌تر، مفهوم‎تر و با پایه‎ریزی قوی‎تر بوده است. Koa به‌جای فراخوانی‎های Node.js از مولدهای ES6 برای میان‌افزار استفاده می‎کند. کد زیر یک اپلیکیشن Hello, World نوشته شده با Koa آورده شده است که از یک مولد که با yield next کنترل را به مولد بعدی منتقل می‎کند، استفاده کرده است.

;var koa = require(‘koa’)
;var app = koa()

 x-response-time//
}app.use(function *(next)
;var start = new Date
;yield next
;var ms = new Date – start
;this.set(‘X-Response-Time’, ms + ‘ms’)
;({

 response//
}()*app.use(function
’;this.body = ‘Hello World
;({

;app.listen(3000)

فهرست ۶

بین مولدهای middleware استفاده شده توسط Koa و فراخوانی‎هایی که توسط Express و Connect استفاده می‎شود تفاوت وجود دارد. پیاده‌سازی Connect به‌سادگی کنترل را از طریق مجموعه‎ای از توابع منتقل می‎کند، در حالی که yield در Koa فروکش می‌کند و سپس چرخه کنترل دوباره اوج می‎گیرد. در فهرست ۶، x-response-time مولد پاسخ را با عبارت yield next پوشش داده است.

Locomotive

Locomotive یک فریم‎ورک وب مخصوص Node.js است که از الگوهای MVC، مسیرهای RESTful و convention over configuration پشتیبانی می‎کند و می‎تواند با هر نوع مرکز داده و موتور الگو یکپارچه شود. Locomotive بر پایه Express و Connect ساخته شده است.
همان گونه که در شکل ۱ مشاهده می‎کنید، Locomotive بعضی از ساختارهای شبیه Ruby-on-Rails را به Express اضافه می‎کند. نمایه‎های Locomotive اغلب در فایل‎های جاوااسکریپت (html.ejs) جاسازی می‎شوند، اما Locomotive از Jade و سایر موتورهای الگوی سازگار با Express نیز پشتیبانی می‎کند. عملکرد REST توسط مسیرها کنترل می‎شود. شما می‎توانید با Locomotive از هر نوع مرکز داده و لایه ORM که مایل باشید استفاده کنید.

شکل۱

Total.js

Total.js یک فریم‎ورک سمت سرور کامل برای Node.js است که مثل Laravel پی‎اچ‎پی یا Django پایتون تماماً با جاوااسکریپت نوشته شده است. سکوی Total.js متشکل از مجموعه‎ای از کتابخانه‎ها، بسته‎ها و محصولات تکمیلی است که توسط خود Total.js ساخته شده‎اند. با استفاده از قطعه کد فهرست ۷ می‎توان یک وب‌سرور ابتدایی Total.js را پیاده‌سازی کرد.

;require(‘total.js’)

}()F.route(‘/’, function
;this.plain(‘total.js is really good!’)
;({

;F.http(‘debug’)

فهرست ۷

فریم‎ورک‎های MVC شبیه Rails برای Node.js
Adonis

Adonis یک فریم‎ورک MVC مخصوص Node.js است که بر اساس موارد کاربرد عملی ساخته شده است. این فریم‎ورک یک ابزار CLI را برای چهارچوب‌بندی و تولید یک پروژه فراهم می‎کند. از جمله ویژگی‎های Adonis می‎توان به اجرای الگوی طراحی رکورد فعال، لایه احراز هویت به همراه سشن‎ها، JWT، اعتبارسنجی ساده، نشانه‎های API شخصی و پیاده‌سازی کنترل‎کننده‌ها به‌عنوان کلاس‎های ES2015 اشاره کرد. مولدهای ES2015 فراخوانی‎های اضافی مرسوم در جاوااسکریپت را حذف می‎کند. فهرست ۸ تمام کاربران را از مرکز داده استخراج و در قالب JSON ارائه می‎کند.

const Route = use(‘Route’)
const User = use(‘App/Model/User’)

}Route.get(‘/’, function * (request, response)
()const users = yield User.all
response.json(users)
({

فهرست ۸

CompoundJS

فرمول پشت CompoundJS شامل + Express ساختار + افزونه‎ها است. ساختار همان استاندارد صفحه‌بندی و دایرکتوری‎ها است و افزونه‎ها ماژول‎های Node.js هستند که کارایی این فریم‎ورک را افزایش می‎دهند. هدف CompoundJS تأمین یک رابط واضح و سازمان‌یافته برای توسعه اپلیکیشن‎های سازگار با Express است. این به این معنا است که هرچه با Express کار می‎کند با CompoundJS هم‌ کار خواهد کرد. شما می‎توانید چهارچوب اپلیکیشن‎های CompoundJS را با CLI تولید کنید.

npm install compound -g
compound init todo-list-app
cd todo-list-app && npm install
.node

فهرست ۹

سایت به طور پیش‌فرض به http://localhost:3000/ گوش می‎کند. شما می‎توانید با فرمان compound generate scaffold بر مبنای مدل‎ها چهارچوب درست کنید.

Geddy

فریم‎ورک Geddy به همان شیوه Rails یکMVC را برای Node.js پیاده‌سازی می‎کند. با همان ساختار دایرکتوری، قابلیت باز کردن کنسول REPL در اپلیکیشن و تولیدکننده اسکریپت که شما می‎توانید برای ساخت اپلیکیشن‎ها از آن استفاده کنید. چهارچوب‌بندی را می‌توان با استفاده از قالب‎های EJS، Jade، Handlebars، Mustache و Swig انجام داد. فرمان geddy jake می‎تواند وظایف (Jake (JavaScript make گوناگونی را در اپلیکیشن انجام دهد. این امر برای وظایف جانبی مانند تست، پیاده‌سازی توسعه مرکز داده و فهرست‌بندی مسیرها مفید است.

Kraken

یک پروژه منبع باز PayPal امن با لایه گسترش‌پذیر که امکانات Express را با فراهم کردن ساختار و ضوابط مثل Locomotive گسترش می‎دهد. هرچند Kraken ستون اصلی فریم‎ورک محسوب می‎شود، از این ماژول‎ها نیز می‎توان به‌صورت جداگانه استفاده کرد:

،Lusca (امنیت)، Kappa (NPM Proxy)
وMakara (LinkedIn Dust.js i18N)
.Adaro (LinkedIn Dust.js Templating)

همان‎ گونه که شکل ۲ مشاهده می‎کنید، Kraken برای تولید پروژه‎ها به yo متکی است. مثل Locomotive این فریم‎ورک نیز پروژه‎های خود را به‌شیوه مرسوم Rails سازماندهی می‎کند.

شکل ۲

Meteor

Meteor یک سکوی اپلیکیشن کامل است که به شما امکان می‎دهد تا با یک روش ساده تماماً با جاوااسکریپت و از طریق یک کد پایه، اپلیکیشن وب یا موبایل بسازید. علاوه بر تبادلات از طریق HTML، این فریم‎ورک داده را برای پردازش از سرور به کلاینت ارسال می‎کند. علاوه بر اجرای مستقل، Meteor می‎تواند با Angular و React نیز برای پشتیبانی از الگوی MVC یکپارچه شود. با وجود اینکه این فریم‎ورک روی Node.js ساخته شده است و از Handlebars, Blaze و قالب‎های Jade پشتیبانی می‎کند، اما نمی‎توان Meteor را شبیه Express دانست. Meteor این امکان را برای شما فراهم می‎کند تا برای پروژه خود نمونه‌سازی و کدهایی با قابلیت پشتیبانی از تمام سکو‎ها (وب، اندروید و iOS) ایجاد کنید. قابلیت یکپارچه شدن با MongoDB را دارد و از پروتکل داده توزیع شده (DDP) استفاده می‎کند. در سمت کلاینت، Meteor به jQuery وابسته است و می‎توان آن را با کتابخانه JavaScript UI استفاده کرد.
Meteor توسط گروه توسعه Meteor که یک استارت‌آپ سرچشمه گرفته از Y Combinator است تولید شده است. این فریم‎ورک به اندازه‎ای جا افتاده است که چندین کتاب آموزشی درباره آن نوشته شده است.
Meteor به‌تنهایی یک نرم‌افزار منبع باز رایگان است، اما گروه Meteor آن را با دریافت حق عضویت Meteor Galaxy DevOps پولی کرده‎اند که شامل فضای سرور AWS و پشتیبانی از Meteor می‎شود. (شکل ۳)

شکل ۳

Nodal

Nodal خود را یک سرور وب Node.js معرفی می‎کند که برای ساخت سرویس‎های API بهینه‌سازی شده است. این سرور وب فریم‎ورک مستقل، واضح و توسعه‌پذیر مربوط به خود را دارد که فلسفه آن بیشتر شبیه به Rails و Django است. می‎توان PostgreSQL را به‌ طور مستقل یا ماژول مرکز داده با Nodal یکپارچه کرد، از آن به‌شکل ORM کوئری گرفت، در مسیریابی آن از Regex استفاده کرد و ابزار CLI را برای ساخت مدل‎ها و کنترل‌کننده‌ها به کار گرفت. برای راه‌اندازی یک سرور Nodal ابتدا باید Nodal را نصب و سپس یک سرور جدید را آماده و راه‌اندازی کنید.

Sails

Sails کار ساخت اپلیکیشن‎های Node.js سفارشی و حرفه‎ای را ساده می‎کند. این فریم‎ورک طراحی شده است تا الگوی آشنای MVC را شبیه‌سازی کند که می‎تواند نیازهای اپلیکیشن‎های مدرن مثل API داده‌محور با امکان بسط‌پذیری و معماری مبتنی بر خدمات را نیز برآورده کند. استفاده از آن به‌ویژه برای ساخت اپلیکیشن‎های چت، داشبوردهای پویا و بازی‎های چندنفره ایدهآل است، اما می‎توانید از آن برای ساخت هرگونه اپلیکیشن تحت وب دیگر نیز استفاده کنید. Sails از WebSocket پشتیبانی می‎کند و به طور خودکار پیام‎های سوکت را به مسیرهای اپلیکیشن شما ارسال می‎کند. Sails روی Express و Socket.io ساخته شده است و برای ORM خود از Waterline استفاده می‎کند. Waterline انواع مختلفی از شیوه‎های ذخیره‌سازی داده و مراکز داده مختلف (SQL و NoSQL) را پشتیبانی می‎کند. Sails به‌گونه‎ای طراحی شده تا با تمام فریم‎ورک‎های وب کاربردی مثل Angular و React یا دستگاه‎های موبایل مثل iOS و اندروید سازگار باشد. تاکنون سه کتاب درباره Sails به چاپ رسیده است.

ThinkJS

ThinkJS یک فریم‎ورک MVC است که از قابلیت‎های ES6 (تابع generator) و ES7 (async و await)، Babel و TypeScript، کتابخانه‎های WebSocket، انواع مختلفی از سشن و کش و مراکز داده MySQL, MongoDB, PostgreSQL و SQLite پشتیبانی می‎کند. EJS, Jade, Swig و موتورهای الگوی Nunjucks نیز توسط این فریم‎ورک پشتیبانی می‎شوند. سازنده مدعی است که ThinkJS قابلیت و پیچیدگی Sails و عملکرد قدرتمند Express یا Koa را یک جا جمع کرده است.

فریم‎ورک‎های همه‌جانبه برای 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 است. همان گونه که در فهرست ۱ مشاهده می‌کنید.

 npm install -g generator-keystone$
yo keystone$

فهرست ۱

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

 

شکل ۱

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 (با کمی‎ تنظیمات که شما انجام می‎دهید) اطمینان حاصل می‎کند که هر پیغام فرستاده شده توسط دیگران که با این الگوها مطابقت دارد دریافت می‎شود.

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 استفاده می‎کند.

منبع

نمایش بیشتر

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا