Heim > Fragen und Antworten > Hauptteil
Ich arbeite mit Nodejs und verwende Expressjs. Jetzt arbeite ich an der Middleware-Funktionalität und möchte wissen, was der „nächste“ Job im Middleware-Konzept ist. „Weiter zur nächsten Middleware“, aber was ist „nächste Middleware“? Ich habe versucht, den folgenden Code zu verwenden, und wenn ich auf „http://localhost:3000/“ klicke, wird in der Konsole und im Browser „Middleware 1 und Middleware 2“ angezeigt „Hallo Welt“ wird immer angezeigt, also bedeutet „nächste Middleware“ immer „Router-Handler“ (Get-Methode)?
const express = require('express'); const app = express(); // Middleware function 1 app.use((req, res, next) => { console.log('Middleware 1'); next(); // Move to the next middleware }); // Middleware function 2 app.use((req, res, next) => { console.log('Middleware 2'); next(); // Move to the next middleware }); // Route handler app.get('/', (req, res) => { res.send('Hello, world!'); }); app.listen(3000, () => { console.log('Server started on port 3000'); });
P粉3279030452024-04-05 16:56:37
这是错误的。下一个中间件并不总是意味着“路由器处理程序”。 Next() 函数重定向到另一个函数。
例如下面的例子,
// Middleware function 1 app.use((req, res, next) => { console.log("Middleware 1"); next(); // Move to the next middleware }); // Route handler app.get("/", (req, res, next) => { console.log("GET /"); next(); }); // Middleware function 2 app.use((req, res) => { console.log("Middleware 2"); res.send("Hello, world!"); });
控制台输出:
浏览器中的响应为 Hello, world!
。因此,next() 函数并不总是意味着路由器处理程序。