Koa.js - Xếp tầng
Các chức năng phần mềm trung gian là các chức năng có quyền truy cập vào context objectvà chức năng phần mềm trung gian tiếp theo trong chu trình phản hồi yêu cầu của ứng dụng. Các chức năng này được sử dụng để sửa đổi các đối tượng yêu cầu và phản hồi cho các tác vụ như phân tích cú pháp nội dung yêu cầu, thêm tiêu đề phản hồi, v.v. Koa tiến thêm một bước nữa bằng cách tạo ra'downstream', sau đó chuyển điều khiển trở lại 'upstream'. Hiệu ứng này được gọi làcascading.
Sau đây là một ví dụ đơn giản về chức năng phần mềm trung gian đang hoạt động.
var koa = require('koa');
var app = koa();
var _ = router();
//Simple request time logger
app.use(function* (next) {
console.log("A new request received at " + Date.now());
//This function call is very important. It tells that more processing is
//required for the current request and is in the next middleware function/route handler.
yield next;
});
app.listen(3000);
Phần mềm trung gian ở trên được gọi cho mọi yêu cầu trên máy chủ. Vì vậy, sau mỗi yêu cầu, chúng tôi sẽ nhận được thông báo sau trong bảng điều khiển.
A new request received at 1467267512545
Để giới hạn nó trong một tuyến đường cụ thể (và tất cả các tuyến con của nó), chúng ta chỉ cần tạo các tuyến đường như chúng ta đã làm để định tuyến. Trên thực tế, những phần mềm trung gian của nó chỉ xử lý yêu cầu của chúng tôi.
Ví dụ,
var koa = require('koa');
var router = require('koa-router');
var app = koa();
var _ = router();
//Simple request time logger
_.get('/request/*', function* (next) {
console.log("A new request received at " + Date.now());
yield next;
});
app.use(_.routes());
app.listen(3000);
Bây giờ bất cứ khi nào bạn yêu cầu bất kỳ quy trình con nào của '/ request', chỉ khi đó nó sẽ ghi lại thời gian.
Thứ tự cuộc gọi phần mềm trung gian
Một trong những điều quan trọng nhất về phần mềm trung gian trong Koa là thứ tự mà chúng được viết / đưa vào tệp của bạn, là thứ tự mà chúng được thực thi ở phía dưới. Ngay sau khi chúng tôi nhấn vào một tuyên bố lợi nhuận trong một phần mềm trung gian, nó sẽ chuyển sang phần mềm trung gian tiếp theo trong hàng, cho đến khi chúng tôi đến phần cuối cùng. Sau đó, một lần nữa chúng tôi bắt đầu di chuyển trở lại và tiếp tục các chức năng từ các câu lệnh lợi nhuận.
Ví dụ, trong đoạn mã sau, chức năng đầu tiên thực hiện đầu tiên cho đến khi có lợi nhuận, sau đó là phần mềm trung gian thứ hai cho đến khi có lợi nhuận, sau đó là chức năng thứ ba. Vì chúng tôi không còn phần mềm trung gian ở đây, chúng tôi bắt đầu di chuyển trở lại, thực thi theo thứ tự ngược lại, tức là thứ ba, thứ hai, thứ nhất. Ví dụ này tóm tắt cách sử dụng phần mềm trung gian theo cách Koa.
var koa = require('koa');
var app = koa();
//Order of middlewares
app.use(first);
app.use(second);
app.use(third);
function *first(next) {
console.log("I'll be logged first. ");
//Now we yield to the next middleware
yield next;
//We'll come back here at the end after all other middlewares have ended
console.log("I'll be logged last. ");
};
function *second(next) {
console.log("I'll be logged second. ");
yield next;
console.log("I'll be logged fifth. ");
};
function *third(next) {
console.log("I'll be logged third. ");
yield next;
console.log("I'll be logged fourth. ");
};
app.listen(3000);
Khi chúng tôi truy cập '/' sau khi chạy mã này, trên bảng điều khiển của chúng tôi, chúng tôi sẽ nhận được -
I'll be logged first.
I'll be logged second.
I'll be logged third.
I'll be logged fourth.
I'll be logged fifth.
I'll be logged last.
Sơ đồ sau đây tóm tắt những gì đang thực sự xảy ra trong ví dụ trên.
Bây giờ chúng ta đã biết cách tạo phần mềm trung gian của riêng mình, chúng ta hãy thảo luận về một số phần mềm trung gian được cộng đồng tạo ra phổ biến nhất.
Phần mềm trung gian của bên thứ ba
Danh sách các phần mềm trung gian của bên thứ ba cho express có sẵn tại đây. Sau đây là một số phần mềm trung gian được sử dụng phổ biến nhất:
- koa-bodyparser
- koa-router
- koa-static
- koa-compress
Chúng ta sẽ thảo luận về nhiều phần mềm trung gian trong các chương tiếp theo.