
راهنمای جامع برای فریمورک های برتر Node.js
Node.js یک محیط اجرایی مبتنی بر موتور جاوا اسکریپت V8 کروم است که برای اجرای برنامه های دسکتاپ و محیط سرور بهینه شده است. Node.js از یک مدل ورودی/خروجی رویداد محور غیر مسدود کننده استفاده می کند که در مقایسه با سرورهای رشته ای مانند Apache، IIS و سرورهای معمولی جاوا، به درخواست ها با کمترین تأخیر و بالاترین کارایی پاسخ می دهد. اگرچه شما می توانید یک وب سرور یا برنامه را فقط از طریق کدنویسی Node.js پیاده سازی کنید، یک فریم ورک می تواند مقدار کدی را که باید بنویسید به میزان قابل توجهی کاهش دهد. در این راهنما قصد داریم فریمورک های موجود برای توسعه دهندگان Node.js را در دو قسمت مجزا معرفی کنیم.
ما با چارچوبهای مینیمالیستی شبیه به سیناترا مانند 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) و ارتباطات گروهی از طریق انتشار و اشتراک کانالها پشتیبانی میکند.
همچنین بخوانید : SQL Server 2017 در مسیر دسترسی همگانی
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 استفاده میکند.