工具來源:app
Nodejs須要手動加載路由文件,若是一個個添加,項目逐漸擴大,比較麻煩。ide
尤爲在項目route目錄下,增長模塊文件夾的時候,引入路由更是麻煩。工具
所以寫了一個Nodejs動態加載路由,Nodejs遍歷目錄,Nodejs路由工具,取名爲route.js。ui
支持無限級別目錄結構,自動遞歸引用。有任何更好的建議,歡迎隨時留意交流。this
使用方法:遞歸
一、文件:app.js同級目錄增長route.js文件,複製下面貼出源代碼;utf-8
二、引入:app.js中引入:var route = require('./route');路由
三、調用:在app變量初始化以後,在app.js中使用route.init(app,[可選參數,路由目錄,默認爲./routes/]),便可動態加載路由文件了;string
工具源代碼:it
/** * 動態遍歷目錄加載路由工具 * author: bling興哥 */ 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){ console.log(routeFile); var route = require(routeFile.substring(0,routeFile.lastIndexOf('.'))); // 在路由文件中定義了一個basePath變量,設置路由路徑前綴 if(route.basePath){ this.app.use(route.basePath,route); }else{ this.app.use(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;