تو این نوشته میخوام ۱۰ تا از فریمورک های برتر node.js رو معرفی کنم. با گسترش جاواسکرپیت و متولد شدن node.js ، شاهد ظهور فریمورک های جاواسکریپتی سمت بک اند هستیم. از اونجایی که این زبان ساده است و خیلی ها مشغول توسعه اون هستند، تو مدت کوتاه فریمورک ها و لایبرری های زیادی براش ساخته شده.
این پست نوشته ، ترجمه آزادی از این مقاله است.
برای انتخاب از بین فریمورک های نود، فاکتور های زیادی وجود داره. اما ۲ نکته کلی وجود داره:
۱- توانایی های فریمورک و مقیاس پذیری (scalability)
۲- راحتی توسعه دهنده در زمان توسعه
همه فریمورک های نود بر روی ماژول http ساخته شده اند. بعضی از فریمورک های نود تاثیر چشمگیری روی کارکرد سرور میزارن (باعث افزایش فشار به سرور و یا کاهش فشار میشن)
فریمورک هایی مثل Express.js و Fastify.js زمانی بهترین انتخاب هستند که سرویس در حال توسعه شما کوچیک باشه و در آینده نیاز به مقیاس پذیری (scalability) بزرگی باشه اما اگر روی پروژه ای با ابعاد متوسط کار میکنید بهتره که دنبال فریمورک هایی باشید که به شما کمک کنند کدهایی با ساختارر بهتر و تمیز تر بنویسید.
بریم سراغ معرفی این ۱۰ فریمورک
یک فریمورک بر بستر MVC است که قابلیت ساختن Rest API توسط JWT و دسترسی به دیتابیس رو داره.
از مزیت های آدونیس از رابط CLI برای سرعت بخشیدن استفاده میکنه.
$ npm i -g @adonisjs/cli $ adonis new adonis-tasks $ adonis serve --dev
ساختار MVC باعث میشه که زمان پیکربندی وب سرور و ... کاهش پیدا کنه.
همچنین سایر نوشته های من در ویرگول:
یک فریمورک سبک برای نود هست که برای اپلیکشن های realtime بسیار مناسب هست. در ادامه مثالی از یک تکه کد با Feathers.js آورده شده که به صورت realtime و WebSockets نوشته شده:
const feathers = require('@feathersjs/feathers'); const express = require('@feathersjs/express'); const socketio = require('@feathersjs/socketio'); const memory = require('feathers-memory'); // Creates an Express compatible Feathers application const app = express(feathers()); // Parse HTTP JSON bodies app.use(express.json()); // Parse URL-encoded params app.use(express.urlencoded({ extended: true })); // Add REST API support app.configure(express.rest()); // Configure Socket.io real-time APIs app.configure(socketio()); // Register a messages service with pagination app.use('/messages', memory({ paginate: { default: 10, max: 25 } })); // Register a nicer error handler than the default Express one app.use(express.errorHandler()); // Add any new real-time connection to the `everybody` channel app.on('connection', connection => app.channel('everybody').join(connection)); // Publish all events to the `everybody` channel app.publish(data => app.channel('everybody')); // Start the server app.listen(3030).on('listening', () => console.log('Feathers server listening on localhost:3030') );
یکی از قدیمی ترین های این عرصه هست که آزمایش خودش رو تو این سال ها پس داده. نصب و راه اندازی این فریمورک در ۴ مرحله ساده و با استفاده از ابزار CLI به راحتی امکان پذیر هست.
$ npm install sails -g $ sails new test-project $ cd test-project $ sails lift
این فریمورک توسط شرکت مطرح IBM توسعه داده شده و توسط کمپانی های مطرحی مثل GoDaddy و Symantec و همچنین خود IBM استفاده میشه. نسخه های منتشر شده این فریمورک به صورت ۱۸ ماهه پشتیبانی میشه (Long-Term Support)
این فریمورک هم از CLI استفاده میکنه :
$ npm i -g @loopback/cli
حالا برای ساختن یک پروژه :
$ lb4 app
مسیر API و سایر کنترلر ها این شکلی هستند:
import {get} from '@loopback/rest'; export class HelloController { @get('/hello') hello(): string { return 'Hello world!'; } }
این فریمورک طراحی شد تا با ۶۵٪ افزایش راندمان، جای Express.js رو بگیره.
// Require the framework and instantiate it const fastify = require('fastify')({ logger: true }) // Declare a route fastify.get('/', (request, reply) => { reply.send({ hello: 'world' }) }) // Run the server! fastify.listen(3000, (err, address) => { if (err) throw err fastify.log.info(`server listening on ${address}`) })
سادگی و راحتی استفاده از Fastify و همچنین شباهت خیلی زیاد به ٍExpress.js باعث میشه زمانی که مشکل کارایی روی سرور داریم ، گزینه ای بهتر از Fastify نداشته باشیم.
این فریمورک با هدف دستیابی به فریمورک آینده Node.js در زمینه وب پا به عرصه گذاشت. NPM که معرف همه دولوپرهای جاواسکریپتی هست از Restify استفاده میکنه. همچنین کمپانی های مطرحی مثل Netflix , Pinterest و Napster از این فریمورک استفاده میکنن.
استفاده از این فریمورک به سادگی آب خوردن هست:
const restify = require('restify'); function respond(req, res, next) { res.send('hello ' + req.params.name); next(); } const server = restify.createServer(); server.get('/hello/:name', respond); server.head('/hello/:name', respond); server.listen(8080, function() { console.log('%s listening at %s', server.name, server.url); });
معماری این فریمورک مثل Angular.js هست پس برای توسعه دهنده های فرانت اند آشنا به نظر میرسه و توسعه اش کار سختی نیست.
import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; async function bootstrap() { const app = await NestFactory.create(AppModule); app.setViewEngine('hbs'); await app.listen(3000); } bootstrap();
هپی یکی از ۳ فریمورک بزرگ نود هست. هپی با داشتن اکوسیستمی از کتابخونه ها و پلاگین های مختلف یکی از بهترین فریمورک های برای سفارشی سازی است.
مثالی ساده از یک وب سرور هپی :
const Hapi = require('@hapi/hapi'); const init = async () => { const server = Hapi.server({ port: 3000, host: 'localhost' }); await server.start(); console.log('Server running on %s', server.info.uri); }; init();
این فریمورک توسط تیم پشتیبان Express با هدف سادگی ، قدرت و کم حجمی برای وب طراحی شده.
کوآ با استفاده از توابع جنراتور و دسترسی به کالبک ها، کنترل خطاها رو راحت تر میکنه. کوآ از هیچ MiddleWare استفاده نمیکنه و این لذت کد زدن سمت سرور رو بیشتر میکنه.
const Koa = require('koa'); const app = new Koa(); app.use(async ctx => { ctx.body = 'Hello World'; }); app.listen(3000);
قطعا پادشاه فریمورک های نود همین فریمورک Express هست. پیش بینی ها خبر از رسیدن به رکورد ۲ میلیون دانلود در روز (تا انتهای سال ۲۰۱۹) رو میدن.
برای نصب اکسپرس:
$ npm install express
راه اندازی یک API ساده:
const express = require('express') const app = express() const port = 3000 app.get('/', (req, res) => res.send('Hello World!')) app.listen(port, () => console.log(`Example app listening on port ${port}!`))
سایر مقاله های من در ویرگول:
Follow me on social media
Telegram
Virgool