是否可以将所有Express路由集中在app文件之外?

时间:2017-09-18 01:59:24

标签: javascript node.js express

基本上,我想避免我的主应用程序文件充斥着路由列表的情况。我想知道是否可以组织路由,比如用户,客户端,位置各自到自己的路由器文件,然后让一种主路由器将所有这些文件拉到我的应用程序的入口点(例如索引)。 JS / server.js / app.js)。

如果可能的话,我正在拍摄类似于此的东西:

app.js

const app = require('express')();
const mainRouter = require('app/routes/main');

app.use(mainRouter);

main.js

const mainRouter = require('express').Router();

const usersRouter = require('./users');
const locationsRouter = require('./locations');

mainRouter.use('/users', usersRouter);
mainRouter.use('/locations', locationsRouter);

module.exports = mainRouter;

1 个答案:

答案 0 :(得分:2)

您可以使用express.Router对象将路线拆分为逻辑组。每组路由都将存储在/routes目录中,其名称反映了与其关联的路由类型,例如clients.js

<强> /routes/clients.js

const express = require('express')

const router = express.Router()

router.get('/', (req, res, next) => {
  res.render('clients/index', { clients: [] })
})

module.exports = router

然后,这些路线会导入app.js并使用app.use()方法在应用中注册。此方法还允许您分配每个导入路由组将嵌套在其下的基本URL。这就是为什么您不需要在每条路线中指定完整路径(例如:/details而不是/clients/details)。

<强> app.js

const express = require('express')

const app = express()

app.use('/clients', require('./routes/clients'))

浏览到http://localhost/clients/,它会将views/clients/index.html返回给您。您会注意到您可以将视图分组为类似的结构。