Hướng dẫn sử dụng Node.js và Express.js

⚡ Tóm tắt thông minh

Express.js là một framework ứng dụng web Node.js tối giản, bổ sung thêm chức năng định tuyến, middleware và render template vào module HTTP cốt lõi, giúp các ứng dụng một trang, nhiều trang và ứng dụng lai có thể hoạt động trên máy chủ chỉ với vài dòng mã.

  • 🔘 Vai trò của ngăn xếp MEAN: Express.js cung cấp lớp backend bên cạnh... MongoDBAngularJS và Node.js.
  • ☑️ Cài đặt: Lệnh `npm install express` tải framework từ Node Package Manager.
  • Định tuyến: app.METHOD(PATH, HANDLER) ánh xạ từng URL và chuyển động từ HTTP sang một trình xử lý duy nhất.
  • 🧪 Templates: app.set('view engine') cộng với res.render cung cấp dữ liệu vào một tệp hiển thị.
  • 🛠️ Hình thức hiện đại: Express 5 chấp nhận các trình xử lý trả về promise và đóng gói express.json().
  • 📊 Ghi chú phiên bản: Jade được đổi tên thành Pug, và Node.js 24 là phiên bản LTS đang hoạt động.

Hướng dẫn sử dụng framework Node.js Express.js.

Trong hướng dẫn này, chúng ta sẽ nghiên cứu framework Express. Framework này được xây dựng theo cách hoạt động như một framework ứng dụng web Node.js tối giản và linh hoạt, cung cấp một bộ tính năng mạnh mẽ để xây dựng các ứng dụng web một trang, nhiều trang và ứng dụng web lai.

Express.js là gì?

Express.js là một framework máy chủ ứng dụng web dựa trên Node.js, được thiết kế đặc biệt để xây dựng các ứng dụng web một trang, nhiều trang và ứng dụng lai.

Nó đã trở thành khung máy chủ tiêu chuẩn cho Node.js. Express là phần backend của một kiến ​​trúc được gọi là MEAN stack.

Express xử lý các lớp định tuyến và phần mềm trung gian trên nền tảng HTTP cốt lõi của Node.js. dòng và API sự kiện.

MEAN là một nguồn mở và miễn phí JavaScript phần mềm dùng để xây dựng các trang web động và các ứng dụng web có các thành phần sau;

1) MongoDB — Cơ sở dữ liệu NoSQL tiêu chuẩn

2) Express.js — Khung ứng dụng web mặc định

3) AngularJS - Các JavaScript MVC framework được sử dụng cho các ứng dụng web

4) Node.js — Khung phần mềm được sử dụng cho các ứng dụng máy chủ và mạng có khả năng mở rộng.

Khung Express.js giúp dễ dàng phát triển một ứng dụng có thể được sử dụng để xử lý nhiều loại yêu cầu như yêu cầu GET, PUT, POST và DELETE.

Cài đặt và sử dụng Express

Express được cài đặt thông qua Node Package Manager. Điều này có thể được thực hiện bằng cách thực hiện dòng lệnh sau

npm cài đặt nhanh

Lệnh trên yêu cầu Trình quản lý gói Node tải xuống gói express cần thiết. mô-đun và lắp đặt chúng cho phù hợp.

Ghi chú phiên bản: npm hiện cài đặt Express 5.2; nhiều dự án vẫn sử dụng Express 4. Cả hai đều chạy các ví dụ bên dưới trên một máy tính. phiên bản Node.js được hỗ trợ.

Hãy sử dụng khung Express mới được cài đặt của chúng tôi và tạo một ứng dụng “Hello World” đơn giản.

Ứng dụng của chúng tôi sẽ tạo ra một ứng dụng đơn giản. mô-đun máy chủ Nó sẽ lắng nghe trên cổng số 3000. Trong ví dụ của chúng ta, nếu một yêu cầu được gửi qua trình duyệt trên cổng này, thì ứng dụng máy chủ sẽ gửi phản hồi 'Hello World' cho máy khách.

Mã máy chủ Annotated Express Hello World đang lắng nghe trên cổng 3000.

var express=require('express');
var app=express();
app.get('/',function(req,res)
{
res.send('Hello World!');
});
var server=app.listen(3000,function() {});

Code Giải thích:

  1. Trong dòng mã đầu tiên, chúng tôi đang sử dụng hàm yêu cầu để bao gồm “mô-đun tốc hành”.
  2. Trước khi có thể bắt đầu sử dụng mô-đun express, chúng ta cần tạo một đối tượng của nó.
  3. Ở đây, chúng ta tạo một hàm gọi lại (callback function). Hàm này sẽ được gọi bất cứ khi nào ai đó truy cập vào thư mục gốc của ứng dụng web của chúng ta, tức là http://localhost:3000. Hàm gọi lại sẽ được sử dụng để gửi chuỗi "Hello World" đến trang web.
  4. Trong hàm gọi lại, chúng ta đang gửi lại chuỗi “Hello World” cho máy khách. Tham số 'res' được sử dụng để gửi nội dung trở lại trang web. Tham số 'res' này là thứ được cung cấp bởi mô-đun 'request' để cho phép một người gửi nội dung trở lại trang web.
  5. Tiếp theo, chúng ta sử dụng hàm `listen` để ứng dụng máy chủ lắng nghe các yêu cầu từ máy khách trên cổng số 3000. Bạn có thể chỉ định bất kỳ cổng nào khả dụng ở đây.

Nếu lệnh được thực thi thành công, kết quả sau sẽ hiển thị khi bạn chạy mã trên trình duyệt.

Đầu ra:

Trình duyệt hiển thị "Hello World" được máy chủ Express trả về trên cổng 3000.

Từ đầu ra,

  • Bạn có thể thấy rõ điều đó nếu bạn truy cập vào... URL Khi truy cập localhost trên cổng 3000, bạn sẽ thấy chuỗi "Hello World" hiển thị trên trang.
  • Vì trong mã nguồn chúng ta đã chỉ định cụ thể máy chủ lắng nghe trên cổng số 3000, nên chúng ta có thể xem được kết quả khi truy cập vào địa chỉ này. URL.

Tuyến đường là gì?

Một tuyến đường gốc duy nhất chỉ là điểm khởi đầu.

Định tuyến xác định cách thức ứng dụng phản hồi yêu cầu của máy khách đến một điểm cuối cụ thể.

Ví dụ, một máy khách có thể thực hiện yêu cầu HTTP GET, POST, PUT hoặc DELETE cho nhiều mục đích khác nhau. URL chẳng hạn như những hình ảnh được hiển thị bên dưới;

http://localhost:3000/Books
http://localhost:3000/Students

Trong ví dụ trên,

  • Nếu yêu cầu GET được thực hiện cho lần đầu tiên URLVậy thì câu trả lời lý tưởng nhất nên là một danh sách các cuốn sách.
  • Nếu yêu cầu GET được thực hiện cho lần thứ hai URLVậy thì câu trả lời lý tưởng nhất nên là một danh sách sinh viên.
  • Vì vậy, dựa trên URL Khi yêu cầu được truy cập, một chức năng khác trên máy chủ web sẽ được kích hoạt, và theo đó, phản hồi sẽ được gửi đến máy khách. Đây chính là khái niệm định tuyến.

Mỗi tuyến có thể có một hoặc nhiều hàm xử lý, được thực thi khi tuyến đó khớp.

Cú pháp chung cho một tuyến đường được hiển thị bên dưới

app.METHOD(PATH, HANDLER)

Trong đó,

1) ứng dụng là một phiên bản của mô-đun express

2) METHOD là phương thức yêu cầu HTTP (GET, POST, PUT hoặc DELETE)

3) PATH là đường dẫn trên máy chủ.

4) HANDLER là chức năng được thực thi khi tuyến đường được khớp.

Gọi số Yêu cầu Mục đích
app.get(PATH, HANDLER) GET Đọc
app.post(PATH, HANDLER) POST Tạo
app.put(PATH, HANDLER) PUT Thay thế
app.delete(PATH, HANDLER) DELETE Hủy bỏ
app.route(PATH) Bị xích Người xử lý nhóm
app.use(HANDLER) Bất kì Gắn phần mềm trung gian

⚠️ Express 5 ghi chú: Các chữ ký này không thay đổi, nhưng app.del() đã trở thành app.delete(), res.sendfile() đã trở thành res.sendFile(), và các ký tự đại diện giờ cần có tên như /*splat.

Hãy xem một ví dụ về cách chúng ta có thể triển khai các tuyến đường trong Express. Ví dụ của chúng ta sẽ tạo ra 3 tuyến đường như sau:

  1. Tuyến A /Node sẽ hiển thị chuỗi “Hướng dẫn về Node” nếu tuyến này được truy cập
  2. A /Tuyến đường góc sẽ hiển thị chuỗi “Hướng dẫn về góc” nếu tuyến đường này được truy cập
  3. Một tuyến đường mặc định / sẽ hiển thị chuỗi "Chào mừng đến với Guru99 bài hướng dẫn.”

Mã cơ bản của chúng tôi sẽ giữ nguyên như các ví dụ trước. Đoạn mã dưới đây là một tiện ích bổ sung để giới thiệu cách triển khai định tuyến.

Mã định tuyến Express được chú thích, định nghĩa các tuyến đường Node, Angular và tuyến đường mặc định.

var express = require('express');
var app = express();
app.route('/Node').get(function(req,res)
{
    res.send("Tutorial on Node");
});
app.route('/Angular').get(function(req,res)
{
    res.send("Tutorial on Angular");
});
app.get('/',function(req,res){
    res.send('Welcome to Guru99 Tutorials');
});

Code Giải thích:

  1. Ở đây chúng ta đang định nghĩa một tuyến đường nếu... URL http://localhost:3000/Node is selected in the browser. To the route, we are attaching a callback function which will be called when we browse to the Node URLHàm này có 2 tham số.
    • Tham số chính mà chúng ta sẽ sử dụng là tham số 'res', tham số này có thể được sử dụng để gửi thông tin trở lại máy khách.
    • Tham số 'req' có thông tin về yêu cầu được thực hiện. Đôi khi các tham số bổ sung có thể được gửi như một phần của yêu cầu được thực hiện và do đó tham số 'req' có thể được sử dụng để tìm các tham số bổ sung được gửi.
  2. Chúng tôi đang sử dụng chức năng gửi để gửi chuỗi “Hướng dẫn về Nút” trở lại máy khách nếu tuyến Nút được chọn.
  3. Ở đây chúng ta đang định nghĩa một tuyến đường nếu... URL http://localhost:3000/Angular is selected in the browser. To the route, we are attaching a callback function which will be called when we browse to the Angular URL.
  4. Chúng tôi đang sử dụng chức năng gửi để gửi chuỗi “Hướng dẫn về Angular” trở lại máy khách nếu tuyến Angular được chọn.
  5. Đây là tuyến đường mặc định được chọn khi bạn truy cập vào thư mục gốc của ứng dụng — http://localhost:3000. Khi tuyến đường mặc định được chọn, thông báo “Chào mừng đến với” sẽ hiển thị. Guru“99 bài hướng dẫn” sẽ được gửi đến khách hàng.

Nếu lệnh được thực thi thành công, kết quả sau sẽ hiển thị khi bạn chạy mã trên trình duyệt.

Đầu ra:

Trình duyệt hiển thị Chào mừng đến với Guru99 bài hướng dẫn trên tuyến đường Express mặc định

Từ đầu ra,

  • Bạn có thể thấy rõ điều đó nếu bạn truy cập vào... URL Trên máy chủ cục bộ ở cổng 3000, bạn sẽ thấy dòng chữ 'Chào mừng đến với Guru99 bài hướng dẫn được hiển thị trên trang.
  • Vì trong mã của chúng tôi, chúng tôi đã đề cập rằng giá trị mặc định của chúng tôi là URL Sẽ hiển thị thông báo này.

Tiếp theo, hãy truy cập vào /Node.

Trình duyệt hiển thị hướng dẫn về Node được trả về bởi tuyến đường Node.

Từ đầu ra,

  • Bạn có thể thấy rằng nếu URL đã được thay đổi thành /Node, tuyến đường Node tương ứng sẽ được chọn và chuỗi "Hướng dẫn về Node" sẽ được hiển thị.

Sau đó truy cập vào /Angular.

Trình duyệt hiển thị hướng dẫn về Angular được trả về bởi tuyến đường Angular.

Từ đầu ra,

  • Bạn có thể thấy rằng nếu URL đã được thay đổi thành /Angular, tuyến đường Node tương ứng sẽ được chọn và chuỗi "Hướng dẫn về Angular" sẽ được hiển thị.

Máy chủ Web mẫu sử dụng express.js

Từ ví dụ trên, chúng ta đã thấy cách quyết định hiển thị kết quả dựa trên định tuyến. Loại định tuyến này được sử dụng trong hầu hết các ứng dụng web hiện đại. Phần còn lại của máy chủ web là sử dụng các mẫu (template) trong Node.js.

Khi tạo các ứng dụng Node.js nhanh chóng, một cách dễ dàng và hiệu quả là sử dụng các template cho ứng dụng. Có rất nhiều framework trên thị trường để tạo template. Trong trường hợp này, chúng ta sẽ lấy ví dụ về framework Jade để tạo template.

Jade được cài đặt thông qua Trình quản lý gói Node.js. Việc này có thể được thực hiện bằng cách chạy dòng lệnh sau trong dòng lệnh:

npm cài đặt ngọc

Lệnh trên yêu cầu Trình quản lý gói Node tải xuống các mô-đun Jade cần thiết và cài đặt chúng một cách phù hợp.

LƯU Ý: Trong phiên bản mới nhất của Node Jade đã không còn được dùng nữa. Thay vào đó hãy sử dụng pug.

⚠️ Tương đương hiện đại: cài đặt, dựng lên PugĐổi tên index.jade thành index.pug và thiết lập app.set('view engine','pug'). Gói jade không nhận được bản cập nhật nào; các bước bên dưới vẫn chạy.

Hãy sử dụng framework Jade vừa được cài đặt và tạo một số mẫu cơ bản.

Bước 1) Bước đầu tiên là tạo một mẫu Jade. Tạo một tệp có tên index.jade và chèn đoạn mã bên dưới. Đảm bảo tạo tệp trong thư mục “views”.

Mã HTML mẫu index.jade với các vị trí giữ chỗ cho tiêu đề và đầu trang.

  1. Ở đây chúng tôi chỉ định rằng tiêu đề của trang sẽ được thay đổi thành bất kỳ giá trị nào được truyền khi mẫu này được gọi.
  2. Chúng tôi cũng chỉ rõ rằng văn bản trong thẻ tiêu đề sẽ được thay thế bằng bất kỳ nội dung nào được truyền vào mẫu Jade.

Đoạn mã ứng dụng hiển thị nó được trình bày bên dưới.

Mã Express được chú thích thiết lập công cụ hiển thị Jade và chỉ mục hiển thị

var express=require('express');
var app=express();
app.set('view engine','jade');
app.get('/',function(req,res)
{
res.render('index',
{title:'Guru99',message:'Welcome'})
});
var server=app.listen(3000,function() {});

Code Giải thích:

  1. Điều đầu tiên cần chỉ định trong ứng dụng là "công cụ hiển thị" sẽ được sử dụng để hiển thị các mẫu. Vì chúng ta sẽ sử dụng Jade để hiển thị các mẫu, nên chúng ta chỉ định điều này cho phù hợp.
  2. Chức năng kết xuất được sử dụng để hiển thị một trang web. Trong ví dụ của chúng tôi, chúng tôi đang hiển thị mẫu (index.jade) đã được tạo trước đó.
  3. Chúng tôi đang truyền tải các giá trị của “Guru99” và “Chào mừng” sẽ được thay thế bằng các tham số “title” và “message” tương ứng. Các giá trị này sẽ được thay thế bằng các tham số 'title' và 'message' được khai báo trong mẫu index.jade.

Nếu lệnh được thực thi thành công, kết quả sau sẽ hiển thị khi bạn chạy mã trên trình duyệt.

Đầu ra:

Trình duyệt hiển thị mẫu Jade với tiêu đề Guru99 và tiêu đề Chào mừng

Từ đầu ra,

  • Chúng ta có thể thấy rằng tiêu đề của trang được đặt thành “Guru99” và tiêu đề của trang được đặt thành “Chào mừng.”
  • Điều này là do mẫu Jade được gọi trong ứng dụng Node.js của chúng ta.

Câu Hỏi Thường Gặp

middleware Các hàm nhận tham số req, res và next, sau đó chạy theo thứ tự đăng ký. Chúng xử lý việc ghi nhật ký, phân tích cú pháp nội dung, xác thực và lỗi, và mỗi hàm phải kết thúc phản hồi hoặc gọi next().

Không. Express đóng gói các trình phân tích cú pháp, vì vậy express.json() và express.urlencoded() thay thế các trình phân tích cú pháp riêng biệt. phân tích cú pháp cơ thể sự phụ thuộc. Hàm hỗ trợ bodyParser() kết hợp đã bị loại bỏ và req.body vẫn không được định nghĩa cho đến khi trình phân tích cú pháp chạy.

Express 5 Đã sửa lỗi để các trình xử lý có thể nhận biết promise, loại bỏ app.del() và res.sendfile(), nâng cấp tính năng khớp đường dẫn để các ký tự đại diện cần có tên như /*splat, và đặt urlencoded extended thành false theo mặc định.

Trên Express 5, một promise bị từ chối sẽ tự động được chuyển đến middleware xử lý lỗi, do đó các lệnh next(err) thủ công sẽ biến mất. Express 4 cần một khối try/catch rõ ràng bên trong mỗi async gọi lại.

PugJade đã được đổi tên vì lý do thương hiệu và gói jade đã lỗi thời. Các mẫu hiện có vẫn hoạt động sau khi đổi tên chúng thành .pug và chuyển đổi công cụ hiển thị.

Node.js 24 là phiên bản LTS đang hoạt động cho đến năm 2026, trong khi Node.js 22 vẫn đang trong giai đoạn bảo trì. cài đặt, dựng lên Một trong số đó. Express 5 yêu cầu Node.js phiên bản 18 trở lên.

Các công cụ quét học máy đọc định nghĩa tuyến đường và thứ tự phần mềm trung gian, sau đó gắn cờ các trường hợp thiếu xác thực hoặc chưa được xác thực. JavaScript các quy tắc CORS đầu vào và cho phép. Một người đánh giá vẫn xác nhận mọi phát hiện.

Trợ lý GitHub và các trợ lý ảo tương tự tạo ra các tệp định tuyến, phần mềm trung gian xác thực và các đoạn mã điều khiển từ một lời nhắc ngắn gọn. Mỗi tuyến đường được tạo ra vẫn cần thử nghiệm trước khi phát hành

Tóm tắt bài viết này với: