Node.js freymvorklari


ULASHISH

Nima uchun Frameworkdan foydalanish kerak?

Node.js ramkalari veb-ilovalar, API-lar va boshqalarni yaratish uchun tuzilma, tashkilot va umumiy yordamchi dasturlarni taqdim etadi.

Ular ishlab chiquvchilarga umumiy rivojlanish muammolariga tayyor echimlarni taqdim etish orqali ilovalarni tezroq yaratishga yordam beradi.

Ramkadan foydalanishning afzalliklari:

  • Mahsuldorlik: Frameworklar marshrutlash, o‘rta dasturni boshqarish va shablonlarni yaratish kabi umumiy vazifalar uchun oldindan tuzilgan yechimlarni taqdim etadi.
  • Standartlashtirish: Ular kodni saqlab qolish va tushunishni osonlashtiradigan naqsh va tuzilmalarni o‘rnatadilar.
  • Hamjamiyat: Ommabop frameworklar katta hamjamiyatlarga, keng ko‘lamli hujjatlarga va ko‘plab uchinchi tomon plaginlari yoki kengaytmalariga ega.
  • Xavfsizlik: Yaxshi saqlangan frameworklar odatda o‘rnatilgan xavfsizlik xususiyatlari va eng yaxshi amaliyotlarni o‘z ichiga oladi.
  • Umumiylik: Ko‘pgina frameworklar ishlash uchun optimallashtirilgan va keshlash, yukni muvozanatlash va boshqalar uchun vositalarni taqdim etadi.

Node.js Frameworks turlari

Node.js ramkalarini dizayn falsafasi va xususiyatlariga ko‘ra keng toifalarga bo‘lish mumkin.

Ushbu toifalarni tushunish loyihangiz ehtiyojlari uchun to‘g‘ri ramka tanlashda yordam beradi.

To‘liq stekli frameworklar

Ushbu frameworklar ko‘pincha o‘rnatilgan shablonlash dvigatellari, ORM tizimlari va boshqalar bilan front-end va back-end ishlab chiqish uchun echimlarni taqdim etadi.

Misollar: Meteor, Sails.js, AdonisJS

Qachon foydalanish: Frontend va backend komponentlari bilan to‘liq veb-ilovalarni yaratish

Minimalist/Mikro frameworklar

Ushbu frameworklar yengil bo‘lishga qaratilgan va faqat asosiy xususiyatlarni taqdim etib, ishlab chiquvchilarga kerakli narsalarni qo‘shish imkonini beradi.

Misollar: Express.js, Koa, Fastify

Qachon foydalaning: Maksimal nazoratni xohlagan joyda API yoki oddiy veb-xizmatlarni yaratish

REST API ramkalari

Avtomatik tekshirish, hujjatlashtirish va versiya yaratish kabi xususiyatlarga ega RESTful API yaratish uchun mo‘ljallangan maxsus frameworklar.

Misollar: LoopBack, NestJS, Restify

Qachon foydalaning: Minimal talabga ega mustahkam, ishlab chiqarishga tayyor APIlarni yaratish

Haqiqiy vaqtda frameworklar

WebSockets va server tomonidan yuborilgan voqealar uchun o‘rnatilgan qo‘llab-quvvatlash bilan real vaqtda ilovalar uchun optimallashtirilgan frameworklar.

Misollar: Socket.io, Sails.js, FeathersJS

Qachon foydalanish: Chat ilovalari, jonli yangilanishlar yoki real vaqt funksiyalarini yaratish


Mashhur Node.js ramkalari

Bu yerda eng ommabop Node.js ramkalari, ularning xususiyatlari va ulardan qachon foydalanish kerakligi to‘liq taqqoslangan.

Ramka tanlash mezonlari

Ramkani tanlashda quyidagi omillarni hisobga oling:

  • Loyihaga qo‘yiladigan talablar: Ramka sizning maxsus ehtiyojlaringizni qo‘llab-quvvatlaydimi?
  • O‘rganish egri chizig‘i: Sizning jamoangiz qanchalik tez samarali bo‘lishi mumkin?
  • Umumiylik: U ishlash talablariga javob beradimi?
  • Hamjamiyat va qo‘llab-quvvatlash: Faol rivojlanish va jamoatchilik yordami bormi?
  • Ekotizim: Plaginlar va oraliq dasturlar mavjudmi?


Express.js

Express eng mashhur va keng qo‘llaniladigan Node.JS frameworkidir bo‘lib, uning soddaligi va moslashuvchanligi bilan mashhur.

Quyidagilar uchun ideal: Istalgan hajmdagi veb-ilovalar va API-larni yaratish

O‘rganish egri chizig‘i: Pastdan o‘rtachagacha

Umumiylik: Ko‘p hollarda foydalanish uchun yaxshi

Ekotizim: Node.js ekotizimidagi eng kattasi

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

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

app.listen(port, () => {
  console.log(`Express server running at http://localhost:${port}`);
});
Misolni ishga tushirish »

Asosiy xususiyatlar:

  • Minimal va moslashuvchan veb-ramka
  • Kuchli marshrutlash tizimi
  • HTTP yordam dasturlari va o‘rta dastur
  • Dvigatel qo‘llab-quvvatlash shablonlari
  • Boshqa ko‘plab frameworklar uchun asos bo‘lib xizmat qiladi

Eng yaxshisi: Umumiy maqsadli veb-ilovalar, API-lar va ko‘proq maxsus frameworklar uchun asos sifatida.

Express.js haqida Express.js bo‘limida batafsil yoritilgan.


Nest.js

Nest.js - bu Angular-dan ilhomlangan, TypeScript bilan yaratilgan va samarali, kengaytiriladigan server ilovalarini yaratish uchun mo‘ljallangan progressiv ramka.

Quyidagilar uchun ideal: Korporativ ilovalar, mikroservislar va murakkab API

O‘rganish egri chizig‘i: O‘rtacha va yuqori (ayniqsa Angular tajribasisiz)

Umumiylik: Zo‘r, Express yoki Fastify ustiga qurilgan

Ekotizim: Kuchli korporativ yordam bilan tez rivojlanmoqda

// app.controller.ts
import { Controller, Get } from '@nestjs/common';

@Controller()
export class AppController {
  @Get()
  getHello(): string {
    return 'Hello World from Nest.js!';
  }
}

// main.ts
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(8080);
  console.log(`Nest.js server running at http://localhost:8080`);
}
bootstrap();
Misolni ishga tushirish »

Asosiy xususiyatlar:

  • TypeScript-birinchi ishlanma
  • Bog‘liqlik in’ektsiya tizimi
  • Modulli arxitektura
  • Ko‘pgina Express o‘rta dasturlari bilan mos keladi
  • GraphQL, WebSockets va mikroservislar uchun o‘rnatilgan yordam
  • Kuchli matn terish va mustahkam me’moriy naqshlar

Eng yaxshisi: Korporativ ilovalar, murakkab API va mikroservislar arxitekturalari, ayniqsa Angular bilan tanish bo‘lgan jamoalar uchun.


Tezkorlash

Fastify - bu minimal yuk va maksimal ishlash bilan eng yaxshi ishlab chiquvchi tajribasini taqdim etishga qaratilgan veb-ramka.

Quyidagilar uchun ideal: Yuqori samarali API va xizmatlar

O‘rganish egri chizig‘i: Pastdan o‘rtachagacha

Umumiylik: Eng tezkor Node.js ramkalaridan biri

Ekotizim: Yaxshi plagin yordami bilan o‘sib bormoqda

const fastify = require('fastify')({ logger: true });
const port = 8080;

// Declare a route
fastify.get('/', async (request, reply) => {
  return { hello: 'Hello World from Fastify!' };
});

// Run the server
const start = async () => {
  try {
    await fastify.listen({ port });
    fastify.log.info(`Fastify server running at http://localhost:${port}`);
  } catch (err) {
    fastify.log.error(err);
    process.exit(1);
  }
};

start();
Misolni ishga tushirish »

Asosiy xususiyatlar:

  • Yuqori unumdorlik (Express’dan 2 baravargacha tezroq)
  • JSON sxemasidan foydalangan holda sxemaga asoslangan tekshirish
  • Plagin arxitekturasi
  • O‘rnatilgan logger
  • Odatiy bo‘lib asinxron
  • TypeScript-ni qo‘llab-quvvatlash

Ular uchun eng yaxshisi: Yuqori unumdor ilovalar, tezlik muhim bo‘lgan API’lar va sxemalarni tekshirishdan foyda ko‘radigan loyihalar.


Koa.js

Express ortidagi jamoa tomonidan yaratilgan Koa veb-ilovalar va APIlar uchun kichikroq, yanada ifodali va mustahkamroq asos bo‘lishni maqsad qilgan.

Quyidagilar uchun ideal: Async/await-dan foydalanadigan zamonaviy veb-ilovalar va API

O‘rganish egri chizig‘i: O‘rtacha (async/awaitni tushunishni talab qiladi)

Umumiylik: Zo‘r, Expressga qaraganda engilroq

Ekotizim: Yaxshi, lekin Expressdan kichikroq

const Koa = require('koa');
const app = new Koa();
const port = 8080;

// Response middleware
app.use(async ctx => {
  ctx.body = 'Hello World from Koa.js!';
});

app.listen(port, () => {
  console.log(`Koa server running at http://localhost:${port}`);
});
Misolni ishga tushirish »

Asosiy xususiyatlar:

  • Async/await yordamida zamonaviy o‘rta dastur arxitekturasi
  • Osonlashtirilgan xatolarga ishlov berish
  • Birlashtirilgan o‘rta ta’minot yo‘q, u yengil
  • Sinab ko‘rish/tutish orqali xatolarni yaxshiroq hal qilish
  • Expressga qaraganda tozaroq, ifodali kod bazasi

Eng yaxshisi: O‘rta dastur stekini ko‘proq nazorat qilishni xohlaydigan va Expressdan ko‘ra zamonaviyroq yondashuvni afzal ko‘radigan dasturchilar.


Hapi.js

Hapi.js - bu ilovalar va xizmatlarni yaratish uchun boy ramka bo‘lib, u koddan ko‘ra konfiguratsiyaga va kirishni tekshirish, keshlash va xatolarni qayta ishlash uchun o‘rnatilgan yordamga e’tibor beradi.

const Hapi = require('@hapi/hapi');

const init = async () => {
  const server = Hapi.server({
    port: 8080,
    host: 'localhost'
  });

  server.route({
    method: 'GET',
    path: '/',
    handler: (request, h) => {
      return 'Hello World from Hapi.js!';
    }
  });

  await server.start();
  console.log(`Hapi server running at ${server.info.uri}`);
};

init();
Misolni ishga tushirish »

Asosiy xususiyatlar:

  • Konfiguratsiyaga asoslangan arxitektura
  • Integratsiyalashgan autentifikatsiya va avtorizatsiya
  • Joi bilan o‘rnatilgan tekshirish
  • Keshlash
  • Plagin tizimi
  • Batafsil API hujjatlari

Ular uchun eng yaxshisi: Koddan ko‘ra konfiguratsiyani afzal ko‘radigan korporativ darajadagi ilovalar va jamoalar.


Adonis.js

Adonis.js Node.js uchun to‘liq stekli MVC ramka bo‘lib, Laraveldan ilhomlangan.

Bu server tomonidagi veb-ilovalarni yozish uchun barqaror ekotizimni ta’minlaydi.

// routes.js
'use strict'

const Route = use('Route')

Route.get('/', () => {
  return 'Hello World from Adonis.js!'
})

// server.js
const { Ignitor } = require('@adonisjs/ignitor')

new Ignitor(require('@adonisjs/fold'))
  .appRoot(__dirname)
  .fireHttpServer()
  .catch(console.error)
Misolni ishga tushirish »

Asosiy xususiyatlar:

  • MVC arxitekturasi
  • O‘rnatilgan ORM (Lucid)
  • Autentifikatsiya tizimi
  • Tasdiqlash
  • Ma’lumotlar bazasi migratsiyalari
  • WebSocket-ni qo‘llab-quvvatlash
  • Sinov vositalari

Eng yaxshisi: To‘liq stekli ilovalar, ayniqsa Laravel yoki boshqa MVC ramkalari bilan tanish bo‘lgan dasturchilar uchun.


Socket.io

An’anaviy veb-ramka bo‘lmasa-da, Socket.io real vaqt rejimida veb-mijozlar va serverlar o‘rtasida ikki tomonlama aloqa uchun juda muhimdir.

const http = require('http');
const server = http.createServer();
const { Server } = require('socket.io');
const io = new Server(server);
const port = 8080;

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');
  });
});

server.listen(port, () => {
  console.log(`Socket.io server running at http://localhost:${port}`);
});
Misolni ishga tushirish »

Eng yaxshisi: Chat ilovalari, jonli boshqaruv panellari va hamkorlik vositalari kabi real vaqtda ilovalar.


Meteor

Meteor - zamonaviy veb va mobil ilovalarni yaratish uchun juda oddiy, to‘liq stekli JavaScript platformasi.

// server/main.js
import { Meteor } from 'meteor/meteor';
import { LinksCollection } from '/imports/api/links';

function insertLink({ title, url }) {
  LinksCollection.insert({title, url, createdAt: new Date()});
}

Meteor.startup(() => {
  // If the Links collection is empty, add some data.
  if (LinksCollection.find().count() === 0) {
    insertLink({
      title: 'W3Schools.com',
      url: 'https://www.w3schools.com'
    });
  }
});
Misolni ishga tushirish »

Ular uchun eng yaxshisi: To‘liq stekli JavaScript ilovalari, ayniqsa bir xil kodlar bazasi mijoz va serverda ishlashi kerak bo‘lganda.


Orqaga qaytish

LoopBack - bu Express-ga asoslangan juda kengaytiriladigan, ochiq manbali Node.JS frameworkidir bo‘lib, u sizga tezkor dinamik REST API-larini yaratish imkonini beradi.

// src/controllers/hello.controller.ts
import {get} from '@loopback/rest';

export class HelloController {
  @get('/hello')
  hello(): string {
    return 'Hello World from LoopBack!';
  }
}

// src/application.ts
import {ApplicationConfig} from '@loopback/core';
import {RestApplication} from '@loopback/rest';
import {HelloController} from './controllers/hello.controller';

export class MyApplication extends RestApplication {
  constructor(options: ApplicationConfig = {}) {
    super(options);
    this.controller(HelloController);
  }
}
Misolni ishga tushirish »

Eng yaxshisi: Minimal kodlash bilan tezkor API yaratish, ayniqsa turli ma’lumotlar manbalariga ulanishda.


APIga yo‘naltirilgan frameworklar

Ushbu frameworklar API va RESTful veb-xizmatlarini yaratish uchun maxsus ishlab chiqilgan.


Qayta tiklash

Restify - bu RESTful veb-xizmatlarini yaratish uchun maxsus ishlab chiqilgan ramka.

const restify = require('restify');

const server = restify.createServer();
const port = 8080;

server.get('/', function(req, res, next) {
  res.send('Hello World from Restify!');
  next();
});

server.listen(port, function() {
  console.log(`Restify server running at http://localhost:${port}`);
});
Misolni ishga tushirish »

Eng yaxshisi uchun: RESTful API-larni keng miqyosda yaratish, ayniqsa DTrace kuzatilishi muhim bo‘lsa.


Strapi

Strapi hech qanday kod yozmasdan API yaratish imkonini beruvchi boshsiz CMS va API generatoridir.

// Strapi is typically configured through a UI interface rather than code

// Example of programmatically creating content from a controller
module.exports = {
  async create(ctx) {
     // Create a new article
     const entity = await strapi.services.article.create(ctx.request.body);

     // Return the created article
     return entity;
  }
};

Ular uchun eng yaxshisi: Kontentga ega ilovalar, boshsiz CMS ehtiyojlari va vizual interfeys bilan tezkor API ishlab chiqish.


To‘g‘ri ramkani tanlash

To‘g‘ri ramka tanlash loyihangiz talablariga, jamoangizning tajribasiga va aniq maqsadlaringizga bog‘liq. Ushbu omillarni ko‘rib chiqing:

Ishlash talablari

  • Maksimal ishlash uchun: Fastify
  • Muvozanatli ishlash va funksiyalar uchun: Express yoki Koa

Loyiha turi

  • REST API: Express, Fastify yoki Restify
  • To‘liq stekli ilovalar: Adonis.js, Meteor yoki Next.js
  • Korxona ilovalari: Nest.js yoki Loopback
  • Haqiqiy vaqtda ilovalar: Socket.io Express yoki Koa bilan

Jamoa tajribasi

  • JavaScript ishlab chiquvchilari: Express yoki Koa
  • TypeScript ishlab chiquvchilari: Nest.js
  • Angular dasturchilar: Nest.js
  • Laravel/PHP ishlab chiquvchilari: Adonis.js

O‘rganish egri chizig‘i

  • O‘rganish eng oson: Express
  • O‘rtacha o‘rganish egri chizig‘i: Koa, Fastify, Hapi
  • O‘rganish egri chizig‘i: Nest.js, Adonis.js

Framework mashhurligi

Ramkaning mashhurligi hamjamiyat qo‘llab-quvvatlashiga, mavjud resurslarga va uzoq umrga ta’sir qiladi. 2023 yil holatiga ko‘ra, ramka mashhurligi (eng yuqoridan eng pastgacha) taxminan:

  1. Express.js
  2. Nest.js
  3. Tezkorlash
  4. Koa.js
  5. Hapi.js

frameworklarni taqqoslash

Ushbu taqqoslash jadvali asosiy mezonlar asosida turli Node.js ramkalarini tezda baholashga yordam beradi:

Ramka Turi Ishlash O‘rganish egri chizig‘i TypeScript-ni qo‘llab-quvvatlash Eng yaxshi uchun ishlatiladi
Express.js Minimalist Yaxshi Past Qisman Umumiy maqsadli veb-ilovalar, API
Nest.js To‘liq xususiyatli Yaxshi Yuqori Ajoyib Korxona ilovalari, murakkab API
Tezkorlash Minimalist Ajoyib O‘rta Yaxshi Yuqori samarali API
Koa.js Minimalist Juda yaxshi O‘rta Yaxshi Zamonaviy, asenkronlashtirilgan ilovalar
Hapi.js To‘liq xususiyatli Yaxshi O‘rta Yaxshi Korxona ilovalari, konfiguratsiyaga asoslangan
Adonis.js To‘liq stekli MVC Yaxshi Yuqori Ajoyib To‘liq stekli ilovalar
Qayta tiklash API yo‘naltirilgan Yaxshi Past Qisman RESTful API
Meteor To‘liq stack O‘rtacha O‘rta Yaxshi Reaktiv to‘liq stek ilovalari
Orqaga qaytish API yo‘naltirilgan Yaxshi O‘rta Ajoyib Minimal kodlash bilan API yaratish
Strapi Boshsiz CMS Yaxshi Low (UI) Yaxshi Kontentni boshqarish, API yaratish

Framework bilan ishlashni boshlash

Oddiy loyiha sozlamasi misoli (Express)

# Create a new project directory
mkdir my-express-app
cd my-express-app

# Initialize npm and install Express
npm init -y
npm install express

# Create main application file (app.js)
touch app.js

Loyiha tuzilmasi bo‘yicha eng yaxshi amaliyotlar

my-express-app/
├── node_modules/ # Dependencies
├── config/ # Configuration files
│ ├── db.js # Database configuration
│ └── env.js # Environment variables
├── controllers/ # Route controllers
├── models/ # Database models
├── routes/ # Route definitions
├── middleware/ # Custom middleware
├── public/ # Static files
├── tests/ # Test files
├── .env # Environment variables
├── .gitignore # Git ignore file
├── app.js # Application entry point
└── package.json # Project configuration

Ramka tanlash bo‘yicha qo‘llanma

Express.js ni tanlang, agar:

  • Siz Node.js uchun yangisiz
  • Sizga maksimal moslashuvchanlik kerak
  • Siz eng katta ekotizimni xohlaysiz
  • Siz REST API yoki an’anaviy veb-ilovani yaratmoqdasiz

NestJS ni tanlang, agar:

  • Siz korporativ dastur yaratmoqdasiz
  • Siz TypeScript-ni afzal ko‘rasiz
  • Sizga qaramlik in’ektsiyasi kerak
  • Siz Angular bilan tanishsiz

Fastify-ni tanlang, agar:

  • Ishlash juda muhim
  • Siz JSON API-larini yaratmoqdasiz
  • Siz o‘rnatilgan sxemani tekshirishni xohlaysiz
  • Siz asinx/kutishni afzal ko‘rasiz

Koa ni tanlang, agar:

  • Siz zamonaviyroq Ekspress muqobilini xohlaysiz
  • Siz async/await dan foydalanishni afzal ko‘rasiz
  • Xatolarni yaxshiroq hal qilish kerak
  • Siz so‘rov/javob aylanishi ustidan ko‘proq nazoratni xohlaysiz

Keyingi qadamlar

Endi siz Node.js ramkalari bilan tanish bo‘lganingiz uchun siz quyidagilarni xohlashingiz mumkin:

  1. Express.js, eng mashhur Node.JS frameworkidir chuqurroq kirib boring.
  2. Node.js yordamida RESTful API yaratish haqida bilib oling
  3. Node.js ilovalarida autentifikatsiya bilan tanishing
  4. Ishlab chiqarishda Node.js ilovalarini qanday joylashtirishni bilib oling


W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!