之前我们每个路由都需要写这么一大段代码,如下
const userRouter = require('../router/user_router');
const authRouter = require('../router/auth_router');
app.use(userRouter.routes());
app.use(userRouter.allowedMethods());
app.use(authRouter.routes());
app.use(authRouter.allowedMethods());
那么有什么办法可以解决呢???
第一步首先你要保证,创建的所有路由js文件都在同一个文件夹里面,然后在这个文件夹里面创建一个index.js
const fs = require('fs');
const useRoutes = (app) =>{
fs.readdirSync(__dirname).forEach((file)=>{
if(file === 'index.js') return;
const router = require(`./${file}`);
app.use(router.routes());
app.use(router.allowedMethods());
})
}
然后就可以使用啦
const useRoutes = require('../router/index');
useRoutes(app);
但是由于我们入口js文件大多是这样的嘛,前面都跟着app.
app.use(bodyParser());
app.on('error',errorHandler);
你们可能觉得这样写影响美观,OK,入乡随俗
const useRoutes = require('../router/index');
app.useRoutes = useRoutes;
app.useRoutes();
换成这样写,但是我们要改一下index.js里面的代码,换成这样的即可
const fs = require('fs');
const useRoutes = function() {
fs.readdirSync(__dirname).forEach((file)=>{
if(file === 'index.js') return;
const router = require(`./${file}`);
this.use(router.routes());
this.use(router.allowedMethods());
})
}