Node读取文件夹下js文件自动加入路由

1,024 阅读1分钟

主要做什么

在原本的express初始项目中,注入路由一般是下面两条语句,但是每次添加一个接口都要有写面两条语句觉得太麻烦了,完全可以写一个循环自动注入嘛

var indexRouter = require('./routes/index');
app.use('/', indexRouter);

使用到的知识

  1. path获得目标文件夹路径
  2. 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);