express 4 简单实现自动注册路由功能
2016-01-15 00:00
169 查看
摘要: express 4 简单实现自动注册路由功能
##实现
在express,模块的lib/router/index.js 的 proto.route 方法定义附件添加代码,实现自动注册路由方法:
##使用
首先在app.js中加载routers的路由主入口,
在路由的各目录中的index.js中调用router的regist方法:
在所有的子路由中将会将当前目录的文件自动解析为 'dir/:website/fileName/',注册fileName.js里exports的方法。
##实现
在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的方法。
相关文章推荐
- 安装Maven并在Eclipse中设置
- Project facet Dynamic Web 3.1
- Storm官方文档翻译之创建Storm项目
- Storm官方文档翻译之在生产环境集群中运行Topology
- 6条适用于PHP初学者的学习线路和建议
- the App Transport Security policy requires the use
- UILabel的自适应宽高
- 自定义TabBar的隐藏
- Scrapy框架——命令行工具
- easyui换主题,并记录在cookie
- 【Kafka】Troubleshooting
- ulimit 设置
- Vert.x 应用的配置
- 创业的第一百零九天
- 非空参数校验的工具类
- MemcachedHelper工具类
- 思科交换机根据MAC、IP地址查找对应端口流程
- RAID的原理和区别
- 百度地图API-获得2个地方的距离
- 缓存穿透与缓存雪崩