Express bilan birinchi server
O’tgan darsda Express kodini o’qidingiz, lekin uni ishga tushirmadingiz. Endi noldan boshlaymiz: bo’sh papkadan brauzerda ochiladigan serverkacha. Oxirida kodni har o’zgartirganda serverni qo’lda qayta yoqishdan ham qutulamiz.
1-qadam: loyiha papkasi
Yangi papka yarating va ichiga kiring:
mkdir express-app
cd express-app
npm darsida ko’rilgan buyruq bilan loyiha pasportini yaratamiz:
npm init -y
Wrote to /home/user/express-app/package.json
Papkada package.json paydo bo’ldi. Bu fayl bo’lmasa npm install
paketni qayerga yozishni bilmaydi.
2-qadam: Express o’rnatish
npm install express
added 69 packages, and audited 70 packages in 3s
found 0 vulnerabilities
Paketlar soni sizda boshqacha bo’lishi mumkin — Express o’zi bilan bir
nechta kichik paketni olib keladi. Tekshirish uchun package.json ni
oching:
{
"name": "express-app",
"version": "1.0.0",
"main": "index.js",
"dependencies": {
"express": "^4.21.2"
}
}
dependencies ichida express turibdi — o’rnatish o’tdi.
3-qadam: eng sodda server
Papkada app.js faylini yarating:
const express = require("express");
// Express ilovasini yaratamiz
const app = express();
app.get("/", (request, response) => {
response.send("Salom, Express!");
});
app.listen(3000, () => {
console.log("Server ishga tushdi: http://localhost:3000");
});
Ishga tushiring:
node app.js
Server ishga tushdi: http://localhost:3000
Terminal qaytmaydi — kursor osilib turadi. Bu to’g’ri belgi: server
ishlayapti va so’rov kutyapti. Brauzerda http://localhost:3000 ni oching,
Salom, Express! chiqadi.
Serverni to’xtatish uchun terminalda Ctrl + C bosing.
Kod qatorma-qator
To’rt qismdan iborat, har birining aniq vazifasi bor.
| Qator | Nima qiladi |
|---|---|
require("express") |
Paketni loyihaga olib kiradi |
express() |
Ilova obyektini yaratadi |
app.get("/", ...) |
/ manziliga kelgan GET so’roviga javob belgilaydi |
app.listen(3000, ...) |
Portni tinglashni boshlaydi |
app.listen ning ikkinchi argumenti — ixtiyoriy funksiya. U server
tayyor bo’lganda bir marta chaqiriladi. console.log shu yerda ataylab
turibdi: usiz server jim ishga tushadi va ishladimi-yo’qmi bilinmaydi.
Port nima
3000 raqami — port.
localhost — har doim o’z kompyuteringizni bildiruvchi nom. Uning IP
manzili 127.0.0.1. Bu server hozircha faqat sizga ochiq: boshqa
kompyuterdan bu manzilga kirib bo’lmaydi.
Portni o’zgartirish mumkin:
app.listen(4000, () => {
console.log("Server ishga tushdi: http://localhost:4000");
});
Endi brauzerda http://localhost:4000 ochiladi. Odatda 3000, 4000,
5000 va 8080 tanlanadi — 80 va 443 tizim portlari, ularni band
qilish uchun qo’shimcha huquq kerak bo’ladi.
Bir nechta marshrut
Bitta manzil bilan cheklanmaymiz. app.js ni to’ldiring:
const express = require("express");
const app = express();
app.get("/", (request, response) => {
response.send("Bosh sahifa");
});
app.get("/about", (request, response) => {
response.send("Biz haqimizda");
});
app.get("/contact", (request, response) => {
// HTML yuborish ham mumkin
response.send("<h1>Bog'lanish</h1><p>Telefon: 71 200 00 00</p>");
});
app.listen(3000, () => {
console.log("Server ishga tushdi: http://localhost:3000");
});
Serverni Ctrl + C bilan to’xtating va node app.js bilan qayta
yoqing. Endi uch manzil ishlaydi:
| Manzil | Natija |
|---|---|
http://localhost:3000/ |
Bosh sahifa |
http://localhost:3000/about |
Biz haqimizda |
http://localhost:3000/contact |
Sarlavha va telefon raqami |
response.send() matnni ham, HTML ni ham yuboradi: matn ichida teg
bo’lsa, brauzer uni HTML sifatida ko’rsatadi. Content-Type sarlavhasini
Express o’zi qo’yadi.
4-qadam: nodemon bilan avtomatik qayta yuklash
Har o’zgartirishdan keyin Ctrl + C va node app.js — bu tez charchatadi.
nodemon shu ishni o’zi qiladi.
npm install --save-dev nodemon
5-qadam: scripts ga dev qo’shish
package.json ni oching va scripts bo’limini shunday qiling:
{
"name": "express-app",
"version": "1.0.0",
"main": "app.js",
"scripts": {
"start": "node app.js",
"dev": "nodemon app.js"
},
"dependencies": {
"express": "^4.21.2"
},
"devDependencies": {
"nodemon": "^3.1.9"
}
}
Endi ishlab chiqish rejimida shunday ishga tushiriladi:
npm run dev
[nodemon] 3.1.9
[nodemon] watching path(s): *.*
[nodemon] starting `node app.js`
Server ishga tushdi: http://localhost:3000
Sinab ko’ring: app.js da Bosh sahifa matnini Assalomu alaykum ga
o’zgartiring va faylni saqlang. Terminalda darhol paydo bo’ladi:
[nodemon] restarting due to changes...
[nodemon] starting `node app.js`
Server ishga tushdi: http://localhost:3000
Brauzerni yangilang — yangi matn chiqadi. Serverni qo’lda qayta yoqish kerak bo’lmadi.
Amaliy mashq
O’z kompyuteringizda bajaring:
express-apppapkasini yaratib,npm init -yvanpm install expressbuyruqlarini bering;app.jsda/marshrutini yozib,node app.jsbilan ishga tushiring va brauzerda tekshiring;/aboutva/contactmarshrutlarini qo’shib, uchala manzilni ham oching;- Serverni to’xtatmay turib, ikkinchi terminal oching va o’sha yerda
node app.jsbering —EADDRINUSExatosini o’z ko’zingiz bilan ko’ring; - Portni
4000ga o’zgartirib,http://localhost:4000da ishlashini tekshiring; nodemonni o’rnatib,scriptsgadevqo’shing vanpm run devishlayotganda matnni o’zgartirib saqlang.
4-qadam eng foydalisi: EADDRINUSE ni ataylab chaqirsangiz, u tasodifan
chiqqanda nima qilishni bilasiz.
Qisqacha xulosa
- Express loyihasi uch buyruqdan boshlanadi:
npm init -y,npm install express,node app.js. express()ilova obyektini,app.get()marshrutni,app.listen()tinglashni beradi.- Port — bitta kompyuterdagi dasturlarni ajratadigan raqam;
localhostesa o’z kompyuteringiz. - Server ishga tushganda terminal qaytmaydi — bu normal holat, to’xtatish Ctrl + C.
EADDRINUSEdegani port band: oldingi serverni to’xtating.response.send()matn va HTML yuboradi,Content-Typeni o’zi qo’yadi.nodemonfaylni saqlaganda serverni qayta yoqadi; udevDependenciesga o’rnatiladi.
Keyingi darsda marshrutlash — manzil ichidagi o’zgaruvchan qismni qanday olish va marshrutlarni fayllarga bo’lish.