Node.js چیست؟ آموزش کامل و جامع Node.js

Node.js چیست؟

Node.js یک محیط اجرایی JavaScript است که به شما امکان می‌دهد کد JavaScript را در خارج از مرورگر اجرا کنید. این پلتفرم بر پایه موتور V8 کروم ساخته شده و برای ساخت برنامه‌های شبکه‌ای مقیاس‌پذیر طراحی شده است.

Node.js از مدل رویداد‌محور و non-blocking I/O استفاده می‌کند که آن را برای برنامه‌های بلادرنگ و داده‌محور مناسب می‌سازد.
مثال ساده Node.js
const http = require('http');

const server = http.createServer((req, res) => {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('سلام به دنیای Node.js خوش آمدید!');
});

server.listen(3000, () => {
  console.log('سرور در پورت 3000 در حال اجراست');
});

تاریخچه Node.js

Node.js در سال 2009 توسط Ryan Dahl ایجاد شد. هدف اصلی او ساخت وب‌سایت‌هایی با قابلیت push بود، جایی که ارتباط بین سرور و مرورگر به صورت بلادرنگ برقرار می‌شود.

از زمان معرفی Node.js، این پلتفرم به یکی از محبوب‌ترین ابزارها برای توسعه سمت سرور تبدیل شده و توسط شرکت‌های بزرگی مانند Netflix، PayPal و LinkedIn استفاده می‌شود.

معماری Node.js

معماری Node.js بر پایه “حلقه رویداد” (Event Loop) استوار است که اجازه می‌دهد عملیات‌های ورودی/خروجی به صورت ناهمزمان انجام شوند.

مثال Event Loop
console.log('شروع');

setTimeout(() => {
  console.log('این پیام با تاخیر نمایش داده می‌شود');
}, 2000);

console.log('پایان');

ویژگی‌های اصلی Node.js

Node.js دارای ویژگی‌های منحصر به فردی است که آن را به یک انتخاب عالی برای توسعه برنامه‌های مدرن تبدیل می‌کند.

۱. اجرای ناهمزمان

Node.js از مدل non-blocking I/O استفاده می‌کند که به برنامه اجازه می‌دهد در حین انجام عملیات‌های ورودی/خروجی به پردازش درخواست‌های دیگر بپردازد.

۲. سرعت بالا

به لطف موتور V8 گوگل، اجرای کد JavaScript در Node.js بسیار سریع است.

۳. اکوسیستم غنی

با بیش از یک میلیون پکیج در npm، توسعه‌دهندگان به کتابخانه‌های متنوعی دسترسی دارند.

استفاده از ویژگی‌های ناهمزمان Node.js می‌تواند کارایی برنامه‌های شما را به طور چشمگیری افزایش دهد.

مدیریت پکیج با NPM

NPM (Node Package Manager) بزرگترین مخزن کتابخانه‌های نرم‌افزاری در دنیاست و به صورت پیش‌فرض همراه با Node.js نصب می‌شود.

دستورات پرکاربرد NPM
# نصب یک پکیج
npm install express

# نصب پکیج به عنوان dependency توسعه
npm install --save-dev nodemon

# آغاز یک پروژه جدید
npm init

# اجرای اسکریپت‌های تعریف شده
npm run start
فایل package.json حاوی اطلاعات مهم پروژه از جمله وابستگی‌ها و اسکریپت‌های اجرایی است.

برنامه‌نویسی ناهمزمان در Node.js

برنامه‌نویسی ناهمزمان یکی از مهم‌ترین مفاهیم در Node.js است. این الگو به ما اجازه می‌دهد عملیات‌های زمان‌بر را بدون مسدود کردن اجرای برنامه انجام دهیم.

مثال‌های برنامه‌نویسی ناهمزمان
// استفاده از Promises
const fs = require('fs').promises;

async function readFile() {
  try {
    const data = await fs.readFile('file.txt', 'utf8');
    console.log(data);
  } catch (error) {
    console.error('خطا در خواندن فایل:', error);
  }
}

// استفاده از Callbacks
fs.readFile('file.txt', 'utf8', (err, data) => {
  if (err) {
    console.error('خطا در خواندن فایل:', err);
    return;
  }
  console.log(data);
});

سیستم ماژول در Node.js

Node.js از سیستم ماژول CommonJS و ES Modules پشتیبانی می‌کند که به شما امکان می‌دهد کد خود را به بخش‌های قابل استفاده مجدد تقسیم کنید.

مثال ماژول‌سازی
// math.js
exports.add = (a, b) => a + b;
exports.subtract = (a, b) => a - b;

// یا با استفاده از ES Modules
export const multiply = (a, b) => a * b;
export const divide = (a, b) => a / b;

// app.js
const math = require('./math');
console.log(math.add(5, 3)); // 8

// یا با ES Modules
import { multiply } from './math';
console.log(multiply(4, 2)); // 8

کار با Express.js

Express.js یک فریم‌ورک وب سریع و کم‌حجم برای Node.js است که امکانات زیادی برای ساخت API‌ها و برنامه‌های وب فراهم می‌کند.

مثال ساده Express.js
const express = require('express');
const app = express();

// میان‌افزار برای پردازش JSON
app.use(express.json());

// تعریف یک مسیر
app.get('/', (req, res) => {
  res.json({ message: 'سلام به API من خوش آمدید!' });
});

// تعریف مسیر POST
app.post('/users', (req, res) => {
  const { name, email } = req.body;
  // پردازش داده‌ها
  res.status(201).json({ message: 'کاربر ایجاد شد' });
});

app.listen(3000, () => {
  console.log('سرور در حال اجرا روی پورت 3000');
});
همیشه از میان‌افزارهای امنیتی مانند helmet برای محافظت از برنامه Express.js خود استفاده کنید.

اتصال به پایگاه داده

Node.js با انواع مختلف پایگاه‌های داده سازگار است. در اینجا مثالی از اتصال به MongoDB با استفاده از Mongoose را می‌بینیم:

اتصال به MongoDB
const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost/myapp', {
  useNewUrlParser: true,
  useUnifiedTopology: true
});

// تعریف مدل
const userSchema = new mongoose.Schema({
  name: String,
  email: { type: String, required: true },
  createdAt: { type: Date, default: Date.now }
});

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

// ایجاد کاربر جدید
async function createUser() {
  try {
    const user = new User({
      name: 'علی',
      email: '[email protected]'
    });
    await user.save();
    console.log('کاربر با موفقیت ذخیره شد');
  } catch (error) {
    console.error('خطا در ذخیره کاربر:', error);
  }
}

بهترین شیوه‌های کدنویسی Node.js

۱. مدیریت خطا

همیشه از try-catch برای مدیریت خطاها استفاده کنید و خطاها را به درستی لاگ کنید.

۲. متغیرهای محیطی

از فایل .env برای ذخیره اطلاعات حساس و تنظیمات پیکربندی استفاده کنید.

۳. امنیت

همیشه از کتابخانه‌های امنیتی مانند helmet و express-rate-limit استفاده کنید.

استفاده از ESLint و Prettier برای حفظ یکپارچگی کد توصیه می‌شود.

استقرار برنامه‌های Node.js

برای استقرار برنامه‌های Node.js گزینه‌های مختلفی وجود دارد:

۱. سرویس‌های ابری

استفاده از پلتفرم‌هایی مانند Heroku، AWS یا Google Cloud Platform

۲. استقرار با Docker

نمونه Dockerfile
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]

ابزارهای مفید برای کار با Node.js

ابزارهای توسعه

– VS Code با افزونه‌های Node.js
– Postman برای تست API
– Nodemon برای توسعه

ابزارهای مانیتورینگ

– PM2 برای مدیریت پروسس
– New Relic برای مانیتورینگ
– Winston برای لاگینگ

استفاده از این ابزارها می‌تواند بهره‌وری شما را در توسعه با Node.js افزایش دهد.

کلمات کلیدی:

Node.js JavaScript برنامه‌نویسی سمت سرور npm Express.js backend توسعه وب برنامه‌نویسی ناهمزمان

جمع‌بندی:

در این مقاله به طور جامع با Node.js و مفاهیم اصلی آن آشنا شدیم. آموختیم که Node.js چیست، چگونه کار می‌کند و چطور می‌توانیم از آن برای ساخت برنامه‌های سمت سرور استفاده کنیم. با معماری event-driven، سیستم ماژول‌ها، و مدیریت پکیج‌ها با npm آشنا شدیم. برای تسلط بیشتر بر Node.js، پیشنهاد می‌کنیم مقالات مرتبط را مطالعه کنید و پروژه‌های عملی را انجام دهید.

Leave a Reply

Your email address will not be published. Required fields are marked *