模組化快遞應用
要使快速 Web 應用程式模組化使用路由器工廠:
模組:
// greet.js
const express = require('express');
module.exports = function(options = {}) { // Router factory
const router = express.Router();
router.get('/greet', (req, res, next) => {
res.end(options.greeting);
});
return router;
};
應用:
// app.js
const express = require('express');
const greetMiddleware = require('./greet.js');
express()
.use('/api/v1/', greetMiddleware({ greeting:'Hello world' }))
.listen(8080);
這將使你的應用程式模組化,可自定義並且你的程式碼可重用。
訪問 http://<hostname>:8080/api/v1/greet
時,輸出將為 Hello world
更復雜的例子
顯示中介軟體工廠優勢的服務示例。
模組:
// greet.js
const express = require('express');
module.exports = function(options = {}) { // Router factory
const router = express.Router();
// Get controller
const {service} = options;
router.get('/greet', (req, res, next) => {
res.end(
service.createGreeting(req.query.name || 'Stranger')
);
});
return router;
};
應用:
// app.js
const express = require('express');
const greetMiddleware = require('./greet.js');
class GreetingService {
constructor(greeting = 'Hello') {
this.greeting = greeting;
}
createGreeting(name) {
return `${this.greeting}, ${name}!`;
}
}
express()
.use('/api/v1/service1', greetMiddleware({
service: new GreetingService('Hello'),
}))
.use('/api/v1/service2', greetMiddleware({
service: new GreetingService('Hi'),
}))
.listen(8080);
當訪問 http://<hostname>:8080/api/v1/service1/greet?name=World
時,輸出將是 Hello, World
並且訪問 http://<hostname>:8080/api/v1/service2/greet?name=World
,輸出將是 Hi, World
。