所有的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;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句