所有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,您可以动态加载路由文件,而不是手动添加路由文件(例如cartuser):

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相关问答推荐

如何使用Express正确跟踪服务器应用程序上的所有传出的Node.js请求

意外标识符断言Shopify Remix应用程序

Twilio-获取呼叫录音不起作用的请求

Express Web 服务器部署到 prod 但 GET 返回超时错误

当 Got 包因错误 JSON 崩溃时如何获取响应文本?

将 null 推入管道后,node.js 可写完成未发出

Axios 响应循环通过函数只返回第一个映射对象的结果

无服务器部署使用无服务器组合抛出`spawn serverless ENOENT`

如何从哪个应用程序用户中找到在 Firebase 身份验证中进行身份验证的用户

nvm / node / npm: node 12 的 npm 比 node 14 的更新?

[NodeJs 从 ADAL 升级到 MSAL]:无法在字符串上创建属性authenticationScheme

错误:无法检测到网络(event="noNetwork",code=NETWORK_ERROR,version=providers/5.6.8)

响应发送 200 而不是 403

无法更新MongoDB中的文档:";伯森场';writeConcern.w';是错误的类型';数组'&引用;

使用 NodeJS 将新对象附加到 DynamoDB 中的 JSON 数组

如何在 MongoDB 上只收听 localhost

如何使用 Node.js 在服务器端管理多个 JS 文件

npm 出现无法读取依赖项错误

nodejs v10.3.0 的 gulp 任务问题:src\node_contextify.cc:629: Assertion `args[1]->IsString()' failed

nodejs - 如何读取和输出 jpg 图像?