express 4 简单实现自动注册路由功能
生活随笔
收集整理的這篇文章主要介紹了
express 4 简单实现自动注册路由功能
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
為什么80%的碼農都做不了架構師?>>> ??
##實現 在express,模塊的lib/router/index.js 的 proto.route 方法定義附件添加代碼,實現自動注冊路由方法:
var fs = require("fs"); var Path = require("path");/*** 添加自動注冊路由方法* @param {string} path 注冊路由的當前目錄* @return*/proto.regist = function(dir, options) {options = options || {};options.ignore = options.ignore || [];options.ignore.push('index.js');var that = this;if (options.file) {options.files = options.files || [];options.files.push(options.file);}if (!options.files) {fs.readdirSync(dir).filter(function(file) {return ((options.ignore.indexOf(file) == -1));}).forEach(function(file) {var fileName = file.split('.')[0];that.use((options.param ? ('/:' + options.param) : '') + '/' + fileName, require(Path.resolve(dir, file)));});} else {options.files.forEach(function(file) {var fileName = file.split('.')[0];that.use((options.param ? ('/:' + options.param) : '') + '/' + fileName, require(Path.resolve(dir, file)));});} };2017-02-28 10:41:56 增加 路由 params 參數
源碼中在路由中定義了 mergeParams 繼承父路由的 params 參數,但是在源碼中初始化時候并未使用 mergeParams方法,估計是源碼的bug。進行如下修改:
--57 router.mergeParams = opts.mergeParams ; ++57 router.mergeParams = opts.mergeParams || mergeParams;##使用
首先在app.js中加載routers的路由主入口,
var routes = require('./routes/index'); //在其他中間件加載完成后,加載主路由 app.use('/', routes);在路由的各目錄中的index.js中調用router的regist方法:
var router = require('express').Router();/* GET home page. */ router.get('/', function(req, res, next) {res.render('index', {title: 'SatanRabbit'}); });router.regist(__dirname,{param:'website'});module.exports = router;在所有的子路由中將會將當前目錄的文件自動解析為 'dir/:website/fileName/',注冊fileName.js里exports的方法。
轉載于:https://my.oschina.net/xqx/blog/603461
總結
以上是生活随笔為你收集整理的express 4 简单实现自动注册路由功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CountDownLatch应用实战
- 下一篇: KVM 虚拟机自动克隆脚本