所有 Hapi 示例(以及 Express 中的类似示例)都显示路由是在起始文件中定义的:
var Hapi = require('hapi');
var server = new Hapi.Server();
server.connection({ port: 8000 });
server.route({
method: 'GET',
path: '/',
handler: function (request, reply) {
reply('Hello, world!');
}
});
server.route({
method: 'GET',
path: '/{name}',
handler: function (request, reply) {
reply('Hello, ' + encodeURIComponent(request.params.name) + '!');
}
});
server.start(function () {
console.log('Server running at:', server.info.uri);
});
但是,当使用大量不同的路径实现生产应用程序时,不难想象这个文件会增长到多大。因此,我想分解路由,将它们分组并存储在单独的文件中,例如 UserRoutes.js、CartRoutes.js,然后将它们附加到主文件中(添加到服务器对象)。您如何建议将其分开然后添加?
最佳答案
您可以为用户路由创建一个单独的文件(config/routes/user.js
):
module.exports = [
{ method: 'GET', path: '/users', handler: function () {} },
{ method: 'GET', path: '/users/{id}', handler: function () {} }
];
与购物车类似。然后在config/routes
中创建一个索引文件(config/routes/index.js
):
var cart = require('./cart');
var user = require('./user');
module.exports = [].concat(cart, user);
然后你可以在主文件中加载这个索引文件并调用 server.route()
:
var routes = require('./config/routes');
...
server.route(routes);
或者,对于 config/routes/index.js
,您无需手动添加路由文件(例如 cart
、user
),而是可以动态加载它们:
const fs = require('fs');
let routes = [];
fs.readdirSync(__dirname)
.filter(file => file != 'index.js')
.forEach(file => {
routes = routes.concat(require(`./${file}`))
});
module.exports = routes;
关于node.js - 使用 Hapi 时如何将路由存储在单独的文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27766623/