主要做什么
在原本的express初始项目中,注入路由一般是下面两条语句,但是每次添加一个接口都要有写面两条语句觉得太麻烦了,完全可以写一个循环自动注入嘛
var indexRouter = require('./routes/index');
app.use('/', indexRouter);
使用到的知识
- path获得目标文件夹路径
- fs读取文件内容
相关代码
有一个routes的文件夹,之后专门存放路由的,然后文件夹下的index.js 就是用来做循环注入
index.js内代码
var path = require('path')
var fs = require('fs')
/**
* 可以写一个循环,读取该文件夹下的文件,循环注入到app中
* app.use('/xxx', xxx);
*/
module.exports = function (app){
var currentDirPath = __dirname
var routes = fs.readdirSync(currentDirPath, 'utf-8')
routes.forEach(item => {
if(item !== 'index.js'){
let eachPath = path.join(currentDirPath, item);
let eachRouter = require(eachPath);
let eachRouterName = item.substr(0, item.lastIndexOf('.'))
app.use(`/${eachRouterName}`, eachRouter)
}
})
}
解释一下
currentDirPath就是存放文件夹的地址,只是改了一下名字,fs.readdirSync就是读取该文件夹下的所有文件的名称,之后就是循环获得每个文件的路径,然后通过require引入默认导出的内容,最后通过app.use注入,每个注入的名字就是文件夹去掉后缀
注入到app.js中
var addEachRouter = require('./routes/index');
var app = express();
......
addEachRouter(app);