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:

  1. express-app papkasini yaratib, npm init -y va npm install express buyruqlarini bering;
  2. app.js da / marshrutini yozib, node app.js bilan ishga tushiring va brauzerda tekshiring;
  3. /about va /contact marshrutlarini qo’shib, uchala manzilni ham oching;
  4. Serverni to’xtatmay turib, ikkinchi terminal oching va o’sha yerda node app.js bering — EADDRINUSE xatosini o’z ko’zingiz bilan ko’ring;
  5. Portni 4000 ga o’zgartirib, http://localhost:4000 da ishlashini tekshiring;
  6. nodemon ni o’rnatib, scripts ga dev qo’shing va npm run dev ishlayotganda 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; localhost esa o’z kompyuteringiz.
  • Server ishga tushganda terminal qaytmaydi — bu normal holat, to’xtatish Ctrl + C.
  • EADDRINUSE degani port band: oldingi serverni to’xtating.
  • response.send() matn va HTML yuboradi, Content-Type ni o’zi qo’yadi.
  • nodemon faylni saqlaganda serverni qayta yoqadi; u devDependencies ga o’rnatiladi.

Keyingi darsda marshrutlash — manzil ichidagi o’zgaruvchan qismni qanday olish va marshrutlarni fayllarga bo’lish.

Bu dars foydali bo'ldimi?

marta ko'rildi