Trong các tài liệu cho express
mô-đun NodeJS , mã ví dụ có app.use(...)
.
use
Hàm này là gì và được định nghĩa ở đâu?
Trong các tài liệu cho express
mô-đun NodeJS , mã ví dụ có app.use(...)
.
use
Hàm này là gì và được định nghĩa ở đâu?
Câu trả lời:
Đối tượng ứng dụng được khởi tạo khi tạo máy chủ Express. Nó có một ngăn xếp phần mềm trung gian có thể được tùy chỉnh app.configure()
(hiện không được dùng trong phiên bản 4.x) .
Để thiết lập phần mềm trung gian của bạn, bạn có thể gọi app.use(<specific_middleware_layer_here>)
cho mọi lớp phần mềm trung gian mà bạn muốn thêm (nó có thể chung cho tất cả các đường dẫn hoặc chỉ được kích hoạt trên (các) đường dẫn cụ thể mà máy chủ của bạn xử lý) và nó sẽ thêm vào ngăn xếp phần mềm trung gian Express của bạn . Các lớp trung gian có thể được thêm từng lớp một trong nhiều lần gọi use
hoặc thậm chí tất cả cùng một lúc trong một chuỗi với một lệnh gọi. Xem use
tài liệu để biết thêm chi tiết.
Để đưa ra một ví dụ cho sự hiểu biết khái niệm về Express Middleware, đây là hình thức ngăn xếp phần mềm trung gian ứng dụng của tôi (app.stack) trông như thế nào khi đăng nhập đối tượng ứng dụng của tôi vào bảng điều khiển dưới dạng JSON:
stack:
[ { route: '', handle: [Function] },
{ route: '', handle: [Function: static] },
{ route: '', handle: [Function: bodyParser] },
{ route: '', handle: [Function: cookieParser] },
{ route: '', handle: [Function: session] },
{ route: '', handle: [Function: methodOverride] },
{ route: '', handle: [Function] },
{ route: '', handle: [Function] } ]
Như bạn có thể có thể suy ra, tôi gọi app.use(express.bodyParser())
, app.use(express.cookieParser())
, vv, mà thêm vào những nhanh middleware 'lớp' cho middleware stack. Lưu ý rằng các tuyến đường trống, có nghĩa là khi tôi thêm các lớp phần mềm trung gian đó, tôi đã chỉ định rằng chúng được kích hoạt trên bất kỳ tuyến đường nào. Nếu tôi đã thêm một lớp phần mềm trung gian tùy chỉnh chỉ được kích hoạt trên đường dẫn /user/:id
sẽ được phản ánh dưới dạng một chuỗi trong route
trường của đối tượng lớp phần mềm trung gian đó trong bản in ngăn xếp ở trên.
Mỗi lớp về cơ bản là thêm một chức năng xử lý cụ thể một thứ gì đó vào luồng của bạn thông qua phần mềm trung gian.
Ví dụ: bằng cách thêm bodyParser
, bạn đảm bảo máy chủ của bạn xử lý các yêu cầu đến thông qua phần mềm trung gian cấp tốc . Vì vậy, bây giờ phân tích phần thân của các yêu cầu đến là một phần của quy trình mà phần mềm trung gian của bạn thực hiện khi xử lý các yêu cầu đến - tất cả chỉ vì bạn đã gọi app.use(bodyParser)
.
next()
gọi lại, mỗi phần mềm trung gian dự kiến sẽ gọi để chuyển xử lý sang chức năng tiếp theo trong đường ống. Hệ thống định tuyến (đối số đầu tiên app.use()
) cho phép đường ống phân nhánh tùy thuộc vào URL
use
là một phương thức để cấu hình phần mềm trung gian được sử dụng bởi các tuyến của đối tượng máy chủ Express HTTP. Phương thức được định nghĩa là một phần của Connect mà Express dựa trên.
Cập nhật Bắt đầu với phiên bản 4.x, Express không còn phụ thuộc vào Kết nối .
Các chức năng phần mềm trung gian trước đây được bao gồm trong Express hiện nằm trong các mô-đun riêng biệt; xem danh sách các chức năng phần mềm trung gian .
app.use(function(){ var object = new SomeConstructor; next(); })
Mỗi app.use (phần mềm trung gian) được gọi mỗi khi yêu cầu được gửi đến máy chủ.
app.use () được sử dụng để gắn kết chức năng phần mềm trung gian hoặc gắn kết với một đường dẫn cụ thể, chức năng phần mềm trung gian được thực thi khi đường dẫn cơ sở khớp.
Ví dụ: nếu bạn đang sử dụng app.use () trong indexRouter.js, như thế này:
//indexRouter.js
var adsRouter = require('./adsRouter.js');
module.exports = function(app) {
app.use('/ads', adsRouter);
}
Trong đoạn mã trên, app.use () gắn đường dẫn trên '/ ads' vào adsRouter.js.
Bây giờ trong adsRouter.js
// adsRouter.js
var router = require('express').Router();
var controllerIndex = require('../controller/index');
router.post('/show', controllerIndex.ads.showAd);
module.exports = router;
trong adsRouter.js, đường dẫn sẽ như thế này cho ads- '/ ads / show', và sau đó nó sẽ hoạt động theo bộ điều khiển Index.ads.showAd ().
app.use ([path], gọi lại, [gọi lại]): chúng ta có thể thêm một cuộc gọi lại trên cùng.
app.use('/test', function(req, res, next) {
// write your callback code here.
});
app.use () hoạt động như thế:
mà rất đơn giản.
Và chỉ sau đó express sẽ làm phần còn lại của công cụ như định tuyến.
app.use(function middleware1(req, res, next){
// middleware1 logic
}, function middleware1(req, res, next){
// middleware2 logic
}, ... middlewareN);
app.use là một cách để đăng ký phần mềm trung gian hoặc chuỗi phần mềm trung gian (hoặc nhiều phần mềm trung gian) trước khi thực hiện bất kỳ logic tuyến cuối hoặc logic tuyến trung gian tùy theo thứ tự trình tự đăng ký phần mềm trung gian.
Middleware: hình thành chuỗi các hàm / middleware-function với 3 tham số req, res và next . tiếp theo là gọi lại đề cập đến chức năng phần mềm trung gian tiếp theo trong chuỗi và trong trường hợp chức năng phần mềm trung gian cuối cùng của chuỗi điểm tiếp theo đến chức năng phần mềm trung gian đầu tiên của chuỗi trung gian đăng ký tiếp theo.
Trong express nếu chúng ta nhập express từ "express" và sử dụng app = express (); sau đó ứng dụng có tất cả các chức năng của express
nếu chúng ta sử dụng app.use ()
với bất kỳ chức năng mô-đun / phần mềm trung gian nào để sử dụng trong toàn bộ dự án express
app.use
là một chức năng yêu cầu phần mềm trung gian. Ví dụ:
app.use('/user/:id', function (req, res, next) {
console.log('Request Type:', req.method);
next();
});
Ví dụ này cho thấy chức năng phần mềm trung gian được cài đặt trong /user/:id
đường dẫn. Hàm này được thực thi cho bất kỳ loại yêu cầu HTTP nào trong /user/:id
đường dẫn.
Nó tương tự như REST Web Server, chỉ sử dụng khác nhau /xx
để thể hiện các hành động khác nhau.
use
có thể làm; Tôi chỉ cần biết đó là gì (và bất kỳ kiến thức bối cảnh nào để biết cách tự nghiên cứu thêm).
app.use là woks như là phần mềm trung gian cho yêu cầu ứng dụng. cú pháp
app.use('pass request format',function which contain request response onject)
thí dụ
app.use('/',funtion(req,res){
console.log(all request pass through it);
// here u can check your authentication and other activities.
})
bạn cũng có thể sử dụng nó trong trường hợp định tuyến yêu cầu của bạn.
app.use('/', roting_object);
Middleware là một thuật ngữ chung cho phần mềm dùng để "kết dính" với nhau, vì vậy app.use là một phương pháp để định cấu hình phần mềm trung gian, ví dụ: để phân tích và xử lý phần thân của yêu cầu: app.use (bodyParser.urlencoding ({Extended: true) })); app.use (bodyParser.json ()); có nhiều phần mềm trung gian bạn có thể sử dụng trong ứng dụng cấp tốc của mình, chỉ cần đọc tài liệu: http://expressjs.com/en/guide/USE-middleware.html
app.use áp dụng phần mềm trung gian được chỉ định cho ngăn xếp phần mềm trung gian ứng dụng chính. Khi đính kèm phần mềm trung gian vào ngăn xếp ứng dụng chính, thứ tự của tệp đính kèm có vấn đề; nếu bạn đính kèm phần mềm trung gian A trước phần mềm trung gian B, phần mềm trung gian A sẽ luôn thực thi trước. Bạn có thể chỉ định đường dẫn áp dụng phần mềm trung gian cụ thể. Trong ví dụ dưới đây, thế giới hello hello sẽ luôn được ghi lại trước ngày lễ vui vẻ.
const express = require('express')
const app = express()
app.use(function(req, res, next) {
console.log('hello world')
next()
})
app.use(function(req, res, next) {
console.log('happy holidays')
next()
})
Nó cho phép bạn sử dụng bất kỳ phần mềm trung gian nào ( đọc thêm ) như body_parser
, CORS
vv Phần mềm trung gian có thể thay đổi request
và response
các đối tượng. Nó cũng có thể thực thi một đoạn mã.
Bạn cũng có thể tạo chức năng phần mềm trung gian của riêng mình như
app.use( function(req, res, next) {
// your code
next();
})
Nó chứa ba thông số req
, res
, next
Bạn cũng có thể sử dụng nó để xác thực và xác nhận của params đầu vào để giữ cho điều khiển của bạn sạch sẽ.
next()
được sử dụng để đi đến phần mềm trung gian hoặc tuyến đường tiếp theo.
Bạn có thể gửi phản hồi từ phần mềm trung gian
Liên kết phần mềm trung gian cấp ứng dụng với một thể hiện của đối tượng ứng dụng bằng cách sử dụng các hàm app.use () và app.METHOD (), trong đó METHOD là phương thức HTTP của yêu cầu mà hàm phần mềm trung gian xử lý (như GET, PUT hoặc POST) bằng chữ thường.
Trong app.use () ngắn hỗ trợ tất cả các loại yêu cầu [ví dụ: get, post, ...] vì vậy nó chủ yếu được sử dụng để thiết lập phần mềm trung gian. hoặc có thể được sử dụng khi các tuyến và chức năng tách biệt
thí dụ:
app.use("/test",functionName)
và functionName nằm trong tập tin khác nhau
app.use()
là một phương pháp trung gian.
Phương thức Middleware giống như một công cụ chặn trong java, phương thức này luôn thực thi cho tất cả các yêu cầu.
Mục đích và việc sử dụng phần mềm trung gian: -
app.use
được tạo bởi express (nodejs middleware framework)
app.use được sử dụng để thực hiện bất kỳ truy vấn cụ thể nào trong quá trình intilization server.js
(nút)
var app = quiries
('express');
Vì vậy, về cơ bản, hàm app.use được gọi mỗi khi máy chủ hoạt động
app.use(bodyparser.json())
app.use là phần mềm trung cấp ứng dụng
Liên kết phần mềm trung gian cấp ứng dụng với một thể hiện của đối tượng ứng dụng bằng cách sử dụng các hàm app.use () và app.METHOD (), trong đó METHOD là phương thức HTTP của yêu cầu mà hàm phần mềm trung gian xử lý (như GET, PUT hoặc POST) bằng chữ thường.
bạn có thể sử dụng để kiểm tra tất cả các yêu cầu, ví dụ: bạn muốn kiểm tra mã thông báo / mã thông báo truy cập mà bạn cần để viết phần mềm trung gian bằng cách sử dụng app.use để kiểm tra mã thông báo trong yêu cầu.
Ví dụ này cho thấy một chức năng trung gian không có đường dẫn gắn kết. Chức năng được thực thi mỗi khi ứng dụng nhận được yêu cầu.
var app = express()
app.use(function (req, res, next) {
console.log('Time:', Date.now())
next()
})
tham khảo từ https://expressjs.com/en/guide/USE-middleware.html