معرفی ۱۰ کتابخانه و فریمورک مهم Node.js
ﺯﻣﺎﻥ ﻣﻄﺎﻟﻌﻪ: 7 دقیقه

معرفی ۱۰ کتابخانه و فریمورک مهم Node.js

نودجی‌اس را می‌توان بزرگ‌ترین و عظیم‌ترین اتفاقی توصیف کرد که در دنیای جاوا اسکریپت اتفاق افتاد. یک محیط و تکنولوژی توسعه، که امکان آن را فراهم کرد تا برنامه نویس‌های جاوا اسکریپت بتوانند از این زبان برنامه نویسی در دنیای توسعه سمت سرور نیز استفاده کنند و از امکانات آن بهره ببرند. با پیشرفت و توسعه نودجی‌اس این موضوع تنها در مسیر استفاده از خود نودجی‌اس میسر نیست و برای توسعه اپلیکیشن‌های مدرن شما باید از کتابخانه‌ها و ابزارهای دیگری نیز استفاده بکنید. به همین دلیل در دنیای نودجی‌اس ابزارها و فریمورک‌های بسیار زیادی پدید آمدند که فرایند توسعه اپلیکیشن‌ها را ساده‌تر کردند.

در این مقاله اختصاصی قصد داریم شما را با ۱۰ مورد از این ابزارها آشنا کنیم. مطمئنا برخی از این موارد را پیشتر شنیده‌اید و ممکن است برخی برای‌تان غریبه باشند. اگر به توسعه اپلیکیشن‌ براساس نودجی‌اس علاقه دارید می‌توانید وارد مسیر یادگیری نودجی‌اس شده و دوره‌های آموزشی مربوط به آن را مشاهده کنید.

گزینه اول: Express.js

اکسپرس یکی از شناخته شده‌ترین فریمورک‌های نودجی‌اس است که البته به عنوان یک میکروفریمورک برای توسعه سمت سرور معرفی شده است. در اکسپرس تمام موارد اولیه برای ایجاد یک اپلیکیشن Back-End وجود داشته و توسعه دهنده می‌تواند از طریق آن یک وبسایت را به شکل واقعی دربیاورد. بیشتر استفاده‌ای که از این فریمورک در دنیای واقعی می‌شود، ایجاد REST API است که به حق می‌توان گفت یکی از بهترین ابزارها برای انجام چنین کاری است. در کنار آن اپلیکیشن‌های Real-Time بسیاری نیز با استفاده از این فریمورک ایجاد شده است. همچنین در ترکیب این میکروفریمورک با دیگر ابزارها، می‌شود دید که Express.js می‌تواند کارهای بسیار زیادی را انجام بدهد.

در زیر می‌توانید یک مثال ساده از یک درخواست HTTP ساده را مشاهده کرد که در میکروفریمورک Express.js صورت گرفته است.

const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(3000, () => {
  console.log('Example app listening on port 3000!');
});

گزینه دوم: Socket.io

کتابخانه Socket.io که یک کتابخانه جاوا اسکریپتی و البته پر استفاده است به شما در ایجاد ارتباطات Real-Time کمک می‌کند. در واقع «سوکت» از مهمترین ابزارها برای ایجاد ارتباط بلادرنگ بین سرور و کلاینت است که در بیشتر اپلیکیشن‌های نودجی‌اس مورد استفاده قرار می‌گیرد. اپلیکیشن‌هایی مانند چت، بازی آنلاین، همکاری تیمی و... از این کتابخانه بسیار استفاده می‌کنند. از این جهت می‌توان این ابزار را به عنوان یک کتابخانه پر استفاده و بسیار کاربردی در نظر گرفت. در قطعه کد زیر می‌توانید یک مثال ساده از یک اپلیکیشن «چت کردن» را مشاهده بکنید که در آن نحوه دریافت پیام‌ها و مدیریت ارتباطات ورودی پیاده سازی شده است.

const io = require('socket.io')(http);

io.on('connection', (socket) => {
  console.log('a user connected');

  socket.on('chat message', (msg) => {
    console.log('message: ' + msg);
    io.emit('chat message', msg);
  });

  socket.on('disconnect', () => {
    console.log('user disconnected');
  });
});

گزینه سوم: Mongoose

برای مدل دهی به داده‌ها در یک اپلیکیشن مبتنی بر نودجی‌اس استفاده می‌شود. در این کتابخانه می‌توانید یک راه‌حل ساده و Schema-Based را مشاهده کنید که شامل موضوعاتی مانند، اعتبارسنجی، ایجاد کوئری، منطق کاری و... می‌شود. در قطعه کد زیر می‌توانید شاهد یک روش ساده برای تعریف یک Schema و یک Model باشید.

const mongoose = require('mongoose');

const userSchema = new mongoose.Schema({
  name: String,
  age: Number,
  email: String
});

const User = mongoose.model('User', userSchema);

گزینه چهارم: Nodemailer

ارسال ایمیل همواره یکی از چالش برانگیزترین موضوعاتی بوده که توسعه دهندگان مختلف با آن سر و کار دارند. قبل از اینکه ابزارهای حرفه‌ای برای هر زبان برنامه نویسی در جهت ارسال ایمیل بوجود بیاید، این کار دشوار و کمی پیچیده بود. اما در نودجی‌اس با وجود ابزاری مانند Nodemailer بسیار ساده شده است. در این ابزار شما با APIهای مختلفی طرف هستید که از چندین پروتکل انتقال پشتیبانی کرده و به شما این قابلیت را می‌دهد تا بتوانید در داخل اپلیکیشن خود، امکان ارسال ایمیل را فراهم کنید. در قطعه کد زیر می‌توانید یک مثال ساده از ارسال ایمیل با استفاده از SMTP را در کتابخانه Nodemailer مشاهده کنید.

const nodemailer = require('nodemailer');

const transporter = nodemailer.createTransport({
  host: 'smtp.gmail.com',
  port: 465,
  secure: true,
  auth: {
    user: 'your@gmail.com',
    pass: 'yourpassword'
  }
});

const mailOptions = {
  from: 'your@gmail.com',
  to: 'recipient@gmail.com',
  subject: 'Hello from Node.js',
  text: 'Hello, this is a test email sent from Node.js!'
};

transporter.sendMail(mailOptions, (error, info) => {
  if (error) {
    console.log(error);
  } else {
    console.log('Email sent: ' + info.response);
  }
});

گزینه پنجم: Passport.js

یکی از شناخته شده‌ترین و البته محبوب‌ترین کتابخانه‌های احرازهویتی برای نودجی‌اس Passport است. در این ابزار شما می‌توانید با APIهای بسیار تطبیق پذیر روبرو شوید که کار برای انجام فرایند احراز هویت در یک اپلیکیشن را بوجود بیاورد. شما در این ابزار با تکنیک‌ها و روش‌های مختلفی از احراز هویت روبرو هستید که مثلا OAuth و OpenID دو مورد از این سیستم‌ها هستند.

در زیر می‌توانید یک قطعه کد ساده از چگونگی احراز هویت یک کاربر با استفاده از نام کاربری و رمز عبور در کتابخانه Passport.js را مشاهده بکنید.

const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;

passport.use(new LocalStrategy(
  function(username, password, done) {
    User.findOne({ username: username }, function(err, user) {
      if (err) { return done(err); }
      if (!user) { return done(null, false); }
      if (!user.validPassword(password)) { return done(null, false); }
      return done(null, user);
    });
  }
));

گزینه ششم:‌ Async.js

Async.js نیز نامی آشنا در بین فریمورک‌ها و کتابخانه‌های جاوا اسکریپتی است. از این کتابخانه برای ایجاد و مدیریت پردازش‌های asynchronous استفاده می‌شود. در این ابزار می‌توانید ببینید که امکانات مختلفی برای ایجاد حالت‌های مختلفی از برنامه نویسی asynchronous فراهم شده است. برای مثال Waterfall، Parallel، Series و... . در زیر می‌توانید براساس یک قطعه کد شیوه پیاده‌سازی تابع Parallel را مشاهده کنید.

const async = require('async');

async.parallel([
    function(callback) {
        setTimeout(function() {
            callback(null, 'one');
        }, 200);
    },
    function(callback) {
        setTimeout(function() {
            callback(null, 'two');
        }, 100);
    }
],
function(err, results) {
    console.log(results);
    // output: ['one', 'two']
});

گزینه هفتم: GraphQL

GraphQL یک استاندارد همگانی و البته مدرن برای ارتباط برقرار کردن میان سرور و کلاینت است که بسیار مورد استقبال نیز قرار گرفته است. در GraphQL داده‌ها و پروسه‌ها در ساحت یک روش Schema-Based ایجاد شده و نسبت به روش‌های قدیمی برای تعریف Restful-API یک روش جدیدتر به حساب می‌آید. در قطعه کد زیر می‌توانید یک نمونه از GraphQL را مشاهده کنید.

const { GraphQLSchema, GraphQLObjectType, GraphQLString } = require('graphql');

const schema = new GraphQLSchema({
  query: new GraphQLObjectType({
    name: 'HelloWorld',
    fields: {
      message: {
        type: GraphQLString,
        resolve: () => 'Hello World!'
      }
    }
  })
});

گزینه هشتم: Axios

Axios یک HTTP کلاینت Promise-Base است که با نودجی‌اس و مرورگر برای ایجاد درخواست‌های HTTP و مدیریت پاسخ‌ها با سرعت و سادگی بسیار زیاد کار می‌کند. در این کتابخانه می‌توانید سازگاری با ویژگی هایی مانند Cancellation و رهگیری را مشاهده کنید. در قطعه کد زیر می‌توانید مدیریت پاسخ‌ها را با استفاده از Axios مشاهده کنیم.

const axios = require('axios');

axios.get('https://jsonplaceholder.typicode.com/posts/1')
  .then(function (response) {
    console.log(response.data);
  })
  .catch(function (error) {
    console.log(error);
  });

گزینه نهم: Winston

Winston یک پکیج انعطاف پذیر نودجی‌اس برای Logging است که شامل ویژگی‌های مختلفی مانند Log Levels و Formatting می‌شود. اگر به دنبال یک روش برای لاگ‌نویسی در اپلیکیشن هستید و البته می‌خواهید به یک روش منعطف و سفارشی سازی شده دست پیدا کنید به شما پیشنهاد می‌کنم که از وینستون استفاده کنید.  در زیر می‌توانید شاهد قطعه کدی باشید که در آن با استفاده از وینستون یک پیام لاگ را در سطوح مختلف نشان داده‌ایم.

const winston = require('winston');

const logger = winston.createLogger({
  level: 'info',
  format: winston.format.json(),
  defaultMeta: { service: 'user-service' },
  transports: [
    new winston.transports.Console(),
    new winston.transports.File({ filename: 'error.log', level: 'error' })
  ]
});

logger.error('This is an error message');
logger.warn('This is a warning message');
logger.info('This is an info message');

گزینه دهم: Nest.js

Nest.js یک فریمورک پیش رو دنیای نودجی‌اس است که به مقیاس پذیری و حرفه‌ای بودن معروف است. در واقع Nest.js یک فریمورک بسیار کامل بوده و توانایی ایجاد یک اپلیکیشن حرفه‌ای و کارآمد از ابتدا را در خود دارد. معماری ماژولاری که این فریمورک پیشنهاد می‌دهد به شما امکان در اختیار گرفتن تمام ابزارهای مورد نیاز در یک ابزار را می‌دهد. این مورد برخلاف ۹ ابزار قبلی که معرفی کردیم یک کار مشخص را انجام نمی‌دهد بلکه می‌توان آن را به عنوان یک فریمورک تمام و عیار در نظر گرفت که بیشتر کارهای مربوط به توسعه سمت سرور را می‌تواند انجام دهد. در زیر می‌توانید ایجاد یک Restful API در این فریمورک را مشاهده کنید.

import { Controller, Get } from '@nestjs/common';

@Controller('hello')
export class HelloController {
  @Get()
  getHello(): string {
    return 'Hello World!';
  }
}

در پایان

در این مقاله سعی کردیم تا شما را با مهمترین فریمورک‌ها و کتابخانه‌های مبتنی بر نودجی‌اس آشنا کنیم. مواردی که به شما این امکان را می‌دهد تا بتوانید اپلیکیشن‌های بهتر و کامل‌تری را توسعه دهید. اگر به توسعه اپلیکیشن‌ براساس نودجی‌اس علاقه دارید می‌توانید وارد مسیر یادگیری نودجی‌اس شده و دوره‌های آموزشی مربوط به آن را مشاهده کنید.

چه امتیازی برای این مقاله میدهید؟

خیلی بد
بد
متوسط
خوب
عالی
2.5 از 2 رای

/@arastoo
ارسطو عباسی
کارشناس تولید و بهینه‌سازی محتوا

کپی رایتر، یوایکس رایتر، متخصص سئو محتوا و… عناوینی هستن که می‌تونم حرفه‌ام رو باهاشون خلاصه کنم اما جدای از این موارد، کتاب نوشتم، پادکست ضبط کردم، مارکتینگ محتوا انجام دادم و خلاصه تجربیات تا بخوایید در زمینه کلمات کسب کردم.

دیدگاه و پرسش

برای ارسال دیدگاه لازم است وارد شده یا ثبت‌نام کنید ورود یا ثبت‌نام

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

ارسطو عباسی

کارشناس تولید و بهینه‌سازی محتوا