nodejs动态路由js

该文件设置了nodejs动态加载路由js文件的过程,路径文件放置在工程的routes文件夹下,该文件夹下的所有文件的路由前缀都会被重置 eg:

这里写图片描述

如上图的文件路径,在经过动态路由js处理后user文件夹下的所有路由都会默认加”user/”前缀,login.js里的路由会自动加上”user/login”前缀,index.js只会加上”user/”前缀。其他文件夹的路由相似。
经过动态路由文件处理后的结果为:

“routes/user/index.js” —–> 路径前缀为”user/”
“routes/user/login.js” —–> 路径前缀为”user/login”
“routes/index.js” —–> 路径前缀为”/”

var fs = require("fs");
var loadRoute = {
  path : './routes/',
  app : null,
  listDir : function(dir){
    var fileList = fs.readdirSync(dir,'utf-8');
    for(var i=0;i<fileList.length;i++) {
      var stat = fs.lstatSync(dir + fileList[i]);
      if (stat.isDirectory()) {
        this.listDir(dir + fileList[i]  + '/');
      } else {
        this.loadRoute(dir + fileList[i]);
      }
    }
  },
  loadRoute : function(routeFile){
    var route = require(routeFile.substring(0,routeFile.lastIndexOf('.')));
    //完整的请求路径
    var routePath = routeFile.substring(8,routeFile.lastIndexOf('.'));
    if(routePath.length >= 5){
      //除去index的有效路径
      if(routePath.substring(routePath.length-5)=="index"){
        var validPath = routePath.substring(0,routePath.length-5);
        this.app.use(validPath,route);
      }else{
        this.app.use(routePath,route);
      }
    }else{
      this.app.use(routePath,route);
    }
  },
  init : function(app,path){
    if(!app){
      console.error("系统主参数App未设置");
      return false;
    }
    this.app = app;
    this.path = path?path:this.path;
    this.listDir(this.path);
  }
};
module.exports = loadRoute;
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值