Frontend foydalanuvchi koβradigan qism boβlsa, backend:
β maβlumotlarni saqlaydi β authentication qiladi β API yaratadi β biznes logikani boshqaradi β xavfsizlikni taβminlaydi β boshqa servislar bilan bogβlanadi
JavaScript ecosystem ichida backend uchun eng mashhur texnologiyalardan biri:
β‘ Node.js
Node.js nima?
Node.js β bu JavaScript kodini browserdan tashqarida serverda ishlatish imkonini beradigan runtime.
Oldin:
JavaScript β faqat frontend
Hozir:
JavaScript β frontend + backend + mobile + desktop
Node.js yordamida:
React frontend
β
Node.js API
β
Database
β
Mobile app
arxitektura qilish mumkin.
ββββββββββββββββββ
Node.js backend uchun asosiy frameworklar
Eng mashhurlari:
-
Express.js
-
NestJS
Ikkalasi ham Node.js ustida ishlaydi.
Lekin yondashuvi boshqacha.
ββββββββββββββββββ
Express.js nima?
Express.js β Node.js uchun minimal va tezkor backend framework.
Oddiy API yaratish:
npm install express
server.js
const express = require("express")
const app = express()
app.use(express.json())
app.get("/",(req,res)=>{
res.json({
message:"Hello Backend"
})
})
app.listen(3000,()=>{
console.log(
"Server running"
)
})
Natija:
GET localhost:3000
Response:
{
"message":"Hello Backend"
}
Juda oddiy.
ββββββββββββββββββ
Express.js afzalliklari
π₯ Tez
Express juda yengil framework.
π₯ Oson oβrganiladi
Yangi boshlovchilar uchun yaxshi.
π₯ Katta ecosystem
Misol:
Authentication:
passport.js
Database:
mongoose
prisma
sequelize
Validation:
zod
joi
π₯ Toβliq erkinlik
Arxitekturani oβzingiz tanlaysiz.
ββββββββββββββββββ
Express.js kamchiliklari
Loyiha kattalashganda:
src
routes
controllers
services
utils
middlewares
models
hammasini oβzingiz boshqarasiz.
Katta jamoada:
β struktura buzilishi mumkin
β kod takrorlanishi mumkin
β standart yoβq
Shuning uchun katta loyihalarda koβpincha NestJS tanlanadi.
ββββββββββββββββββ
Express.js Controller misol
routes/user.js
router.get(
"/users",
userController
)
controller:
exports.getUsers =
async(req,res)=>{
const users =
await User.find()
res.json(users)
}
Oddiy.
ββββββββββββββββββ
NestJS nima?
NestJS β Node.js uchun enterprise darajadagi framework.
U TypeScript asosida ishlaydi.
NestJS ichida:
β Modules
β Controllers
β Services
β Dependency Injection
β Guards
β Pipes
β Middleware
bor.
Struktura:
src
app.module.ts
users
users.controller.ts
users.service.ts
users.module.ts
ββββββββββββββββββ
NestJS Controller
users.controller.ts
@Controller("users")
export class UsersController{
@Get()
findAll(){
return "Users"
}
}
API:
GET
/users
ββββββββββββββββββ
NestJS Service
Biznes logika:
@Injectable()
export class UsersService{
findAll(){
return [
{
name:"Ulugbek"
}
]
}
}
Controller:
constructor(
private service:UsersService
){}
@Get()
get(){
return this.service.findAll()
}
Bu Dependency Injection.
ββββββββββββββββββ
NestJS afzalliklari
π₯ Katta loyihalar uchun ideal
Masalan:
Social network
Bank system
Marketplace
Enterprise app
π₯ Tizimli arxitektura
Har bir narsa joyida:
Controller
β
Service
β
Database
π₯ TypeScript bilan kuchli
Xatolarni oldindan topadi.
π₯ Built-in imkoniyatlar
Authentication:
Guards
Validation:
Pipes
Security:
Middleware
ββββββββββββββββββ
NestJS kamchiliklari
β Boshlash qiyinroq
Expressga qaraganda koβproq tushuncha kerak.
β Koβproq kod yoziladi
Oddiy API uchun baβzida ortiqcha.
β Kichik loyiha uchun ogβir
Masalan:
3 ta endpoint boβlsa Express yetadi.
ββββββββββββββββββ
Backend uchun kerakli kutubxonalar
1. Prisma ORM
Database bilan ishlash.
Oβrnatish:
npm install prisma
Model:
model User{
id Int @id @default(autoincrement())
name String
email String
}
Query:
const users =
await prisma.user.findMany()
Afzalligi:
β Type safe
β PostgreSQL bilan yaxshi
β Migration
Kamchiligi:
β Murakkab querylarda oβrganish kerak
ββββββββββββββββββ
MongoDB uchun Mongoose
npm install mongoose
Schema:
const UserSchema =
new mongoose.Schema({
name:String,
email:String
})
ββββββββββββββββββ
Authentication
JWT
Kutubxona:
npm install jsonwebtoken
Token:
jwt.sign(
{
id:user.id
},
SECRET
)
Foydalanuvchi login qilganda token oladi.
ββββββββββββββββββ
Password hashing
bcrypt
npm install bcrypt
Hash:
const hash =
await bcrypt.hash(
password,
10
)
Tekshirish:
bcrypt.compare(
password,
hash
)
ββββββββββββββββββ
Validation
Zod
npm install zod
Schema:
const schema =
z.object({
email:z.string().email(),
age:z.number()
})
ββββββββββββββββββ
File upload
Multer:
npm install multer
Image upload:
User
β
API
β
Storage
Masalan:
AWS S3
ImageKit
Cloudinary
ββββββββββββββββββ
API Documentation
Swagger:
npm install swagger-ui-express
Natija:
/api/docs
Backend documentation.
ββββββββββββββββββ
Realtime
Chat uchun:
Socket.io
npm install socket.io
Server:
io.on(
"connection",
(socket)=>{
console.log(
"User connected"
)
})
Ishlatiladi:
Chat
Notification
Live updates
ββββββββββββββββββ
Express vs NestJS
Express:
β tez
β oddiy
β flexible
β katta loyiha qiyin
NestJS:
β professional
β scalable
β clean architecture
β oβrganish qiyinroq
ββββββββββββββββββ
Qaysi birini tanlash?
Portfolio:
Express
Startup:
Express yoki NestJS
Enterprise:
NestJS
Real-time app:
Express + Socket.io yoki NestJS
ββββββββββββββββββ
Professional Node.js backend stack:
π₯ Node.js
π₯ TypeScript
π₯ NestJS
π₯ Prisma
π₯ PostgreSQL
π₯ Redis
π₯ JWT
π₯ Docker
π₯ Swagger
π₯ WebSocket
Backend faqat API yozish emas.
Bu: Architecture, Security, Database, Performance, Scalability demakdir.
Har bir kuchli frontend developer bir kun kelib backend tushunishi kerak.
Chunki yaxshi dasturchi faqat interface emas, butun tizimni koβra oladi. π
#NodeJS #NestJS #ExpressJS #Backend #JavaScript #TypeScript #WebDevelopment

Discussion0
No comments yet.