分享一个自己写的小工具: dir-requirer
前言
之前在看许多站点的源代码时,类似这样的代码总是屡见不鲜:1
2
3
4
5
6
7
8
9
10
11
12var sign = require('./controllers/sign');
var site = require('./controllers/site');
var user = require('./controllers/user');
var message = require('./controllers/message');
var topic = require('./controllers/topic');
var reply = require('./controllers/reply');
var rss = require('./controllers/rss');
var staticController = require('./controllers/static');
var auth = require('./middlewares/auth');
var limit = require('./middlewares/limit');
var github = require('./controllers/github');
var search = require('./controllers/search');
这可以算是许多站点route文件里的小常态了,往往在一个文件(web_router.js)里引用另一个目录(./controllers与./middlewares)里的大量(甚至所有)js文件。这其实是一种不是很爽的编程体验。所以笔者这里自己动手写了一个以目录为单位
来导入整个目录下所有module的小工具:dir-requirer,支持导入目录下所有的.js
,.json
和.node
文件(可自定义),并且返回一个与目录结构相同
的对象,支持屏蔽指定文件及目录
。
以下是工具简介:
用途
dir-requirer是一个对nodejs自身的require方法的封装,使用它可以直接require一个目录,它会帮助你require指定目录下的
所有文件,并且返回一个与目录结构相同的对象,目录中被require的文件名即对象的方法名。
比如在当前目录下的dir文件夹的结构如下:
1 | |-- inner2 -- d.json |
1 | var dr = require('dir-requirer')(__dirname); |
安装
通过NPM即可安装使用:
1 | $ npm install dir-requirer |
调用:
1 | var dr = require('dir-requirer')(__dirname); |
使用
比如在当前目录下的dir文件夹的结构如下:
1 | |-- inner2 -- d.json |
dr(path,options)
参数:
path(String)
- 指定要导入的路径options(Object)
- 可选的配置选项
options可选属性:
ext(Array)
- 只导入指定扩展名的文件,如[‘.json’],默认为[‘.js’,’.json’,’.node’]dirBlackList(Array)
- 不导入指定目录名下的所有文件,如[‘inner2’],默认为[]fileBlackList(Array)
- 不导入指定文件,如[‘e.js’],默认为[]
例子:
1 | var dr = require('dir-requirer')(__dirname); |