- vừa được xem lúc

[ExpressJS] Bài 4 - Sử Dụng Middleware

0 0 14

Người đăng: Semi Art

Theo Viblo Asia

Trong bài viết này, chúng ta sẽ nói về việc sử dụng middleware - hay các plug-in xử lý trung gian trước khi yêu cầu được xử lý bởi các hàm tiếp nhận gắn tại endpoint và phản hồi lại cho phía trình duyệt web.

Cú pháp sử dụng middleware

Ồ... trước hết chúng ta cần biết một middleware hay một plug-in xử lý trung gian trông như thế nào đã. Ở đây chúng ta sẽ tạo ra một plug-in có tên là logger để in nhật ký tất cả các yêu cầu nhận được.

const logger = function(request, response, next) { var datetime = new Date(); console.log("= = = = = = = = = ="); console.log("Datetime:" + datetime.toString()); console.log("Request URL: " + request.originalURL); next(); // chuyển quyền xử lý tới middleware tiếp thep
}; // logger module.exports = logger;
const express = require("express");
const app = express(); const logger = require("./middleware/logger");
const homeRouter = require("./route/home"); app.use(logger);
app.use(homeRouter); app.listen(3000);

Bạn thấy đấy, một middlware về cơ bản là một hàm xử lý thông thường chứ không phải là một khái niệm mới. Tên gọi middleware chỉ là để phân biệt với các hàm xử lý cuối cùng đảm nhiệm tác vụ phản hồi lại yêu cầu với các phương thức của response.

Để gắn một middleware vào trước tất cả các tuyến route thì chúng ta có thể sử dụng phương thức app.use(middleware) ở vị trí trước khi gắn các router như trong code ví dụ ở trên. Trong trường hợp muốn sử dụng một middleware cho riêng một tuyến xử lý route nào đó thì chúng ta có thể sử dụng phương thức router.use(middleware) trước khi gắn hàm xử lý cho các phương thức tiếp nhận yêu cầu.

const express = require("express");
const router = express.Router(); const checkLoginState = require("../middleware/login"); router.use(checkLoginState); router.get("/", function(request, response, next) { // ...
});

Những middleware phổ biến

Nói đến các plug-in tiện ích của các thư viện và framework phổ biến, chắc chắn là chúng ta sẽ luôn có thể tìm thấy rất nhiều kết quả lựa chọn nếu Google một cách nghiêm túc. Với ExpressJS thì thao tác tìm kiếm của chúng ta có phần thuận lợi hơn với npm là nguồn cung cấp tin cậy bởi mặc định được phân phối kèm môi trường NodeJS.

Bên cạnh đó, ExpressJS có một hạng mục nhỏ được đặt ngay trên trang web của họ và liệt kê một số middleware phổ biến nhất để giúp người sử dụng tiết kiệm thời gian.

ExpressJS.com => Resouces => Middleware

a. morgan

Ví dụ đối với tác vụ in nhật ký các yêu cầu gửi đến server thì chúng ta có thể sử dụng một middleware có tên là morgan trong danh sách đó.

npm install morgan --save
const express = require("express");
const app = express(); const logger = require("morgan");
const homeRouter = require("./route/home"); app.use(logger);
app.use("/", homeRouter); app.listen(3000);

b. serve-static

Một middleware phổ biến khác nữa là serve-static được sử dụng để tự động xử lý các yêu cầu truy xuất các tệp tĩnh, ví dụ như các tệp .css, .js, v.v...

npm install serve-static --save
const path = require("path");
const express = require("express");
const serveStatic = require("serve-static");
const homeRouter = require("./route/home"); const staticFolder = path.join(__dirname, "static");
const staticServer = serveStatic(staticFolder); const app = express();
app.use(staticServer);
app.use("/", homeRouter);
// ... other routers app.listen(3000);

Nói riêng đối với tác vụ xử lý các yêu cầu tệp tĩnh thì ExpressJS cung cấp một middleware sẵn có là express.static(path).

c. cookie-parser

Một middleware phổ biến được sử dụng để gắn các dữ liệu lưu trong cookie của trình duyệt web vào object request. Điều này giúp cho chúng ta có thể truy xuất các bản ghi cookie để xử lý các thao tác ví dụ như kiểm tra thông tin đăng nhập lần cuối của người dùng được lưu lại vào cookie bằng code JavaScript ở phía mặt tiền client-side.

npm install cookie-parse --save
const express = require("express");
const homeRouter = require("./route/home");
const cookieParser = require("cookie-parser"); const app = express();
app.use(cookieParser());
app.use("/", homeRouter);
// ... other routers app.listen(3000);

Sau khi gắn cookieParser thì các object request sẽ được gắn thêm các thuộc tính request.cookiesrequest.signedCookies.

d. compression

Một middleware phổ biến được sử dụng để nén nội dung gửi phản hồi giúp giảm lượng băng thông chiếm dụng cho mỗi thao tác gửi dữ liệu phản hồi; Sẽ rất hữu ích khi blog của bạn đang xây dựng có nhiều người truy cập để đọc bài viết.

npm install compression --save
const express = require("express");
const compression = require("compression");
const homeRouter = require("./route/home"); const app = express();
app.use(compression());
app.use("/", homeRouter); app.listen(3000);

Kết thúc bài viết

Bài viết giới thiệu về sử dụng middleware trong ExpressJS của chúng ta đến đây là kết thúc. Như vậy là tính tới thời điểm hiện tại thì chúng ta đã biết cách tạo ra một server với ExpressJS và thực hiện các thao tác điều hướng cơ bản để phân chia các kiểu yêu cầu về các tuyến xử lý route. Đồng thời, chúng ta cũng mới biết thêm được về cách gắn các plug-in xử lý trung gian cho app hoặc mỗi route để thực hiện các thao tác tiền xử lý hoặc tiện ích nào đó.

Trong bài viết tiếp theo, chúng ta sẽ nói về phần mềm express-generator - giúp chúng ta nhanh chóng thiết lập một project mới với một số plug-in phổ biến và một vài thao tác thiết lập sẵn. Điều này giúp cho chúng ta có thể tiết kiệm thời gian và tập trung vào code xử lý chính của server, đồng thời tạo ra một dạng thức thư mục chung cho các project để có thể dễ dàng chia sẻ và sử dụng code.

[ExpressJS] Bài 5 - Express Generator

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Typescript - Sự khác nhau giữa Typescript và Javascript

Typescript là gì. TypeScript là một ngôn ngữ giúp cung cấp quy mô lớn hơn so với JavaScript.

0 0 528

- vừa được xem lúc

Bạn đã biết các tips này khi làm việc với chuỗi trong JavaScript chưa ?

Hi xin chào các bạn, tiếp tục chuỗi chủ đề về cái thằng JavaScript này, hôm nay mình sẽ giới thiệu cho các bạn một số thủ thuật hay ho khi làm việc với chuỗi trong JavaScript có thể bạn đã hoặc chưa từng dùng. Cụ thể như nào thì hãy cùng mình tìm hiểu trong bài viết này nhé (go).

0 0 436

- vừa được xem lúc

Một số phương thức với object trong Javascript

Trong Javascript có hỗ trợ các loại dữ liệu cơ bản là giống với hầu hết những ngôn ngữ lập trình khác. Bài viết này mình sẽ giới thiệu về Object và một số phương thức thường dùng với nó.

0 0 158

- vừa được xem lúc

Tìm hiểu về thư viện axios

Giới thiệu. Axios là gì? Axios là một thư viện HTTP Client dựa trên Promise.

0 0 149

- vừa được xem lúc

Imports và Exports trong JavaScript ES6

. Giới thiệu. ES6 cung cấp cho chúng ta import (nhập), export (xuất) các functions, biến từ module này sang module khác và sử dụng nó trong các file khác.

0 0 113

- vừa được xem lúc

Bài toán đọc số thành chữ (phần 2) - Hoàn chỉnh chương trình dưới 100 dòng code

Tiếp tục bài viết còn dang dở ở phần trước Phân tích bài toán đọc số thành chữ (phần 1) - Phân tích đề và những mảnh ghép đầu tiên. Bạn nào chưa đọc thì có thể xem ở link trên trước nhé.

0 0 249