1 | #pomelo-loader - loader module for pomelo
|
2 | pomelo中使用Convention over Configuration的形式管理工程目录,不同的功能按约定放在不同的目录下。pomelo-loader为pomelo提供了按目录加载模块的功能。
|
3 |
|
4 | pomelo-rpc可以批量加载指定目录下的模块,挂到一个空对象下返回(但不会递归加载子目录),同时提供模块命名机制。
|
5 |
|
6 | + Tags: node.js
|
7 |
|
8 | ##规则说明
|
9 | 模块命名
|
10 |
|
11 | 模块默认以文件名为名。如:加载lib/a.js后,返回的结果为:{a: require('./lib/a')}。
|
12 |
|
13 | 如果模块中定义了name属性,则会以name作为模块的名称。如:
|
14 | ```javascript
|
15 | a.js
|
16 | exports.name = 'test';
|
17 | ```
|
18 | 返回的结果为:{test: require('./lib/a')}
|
19 |
|
20 | 模块定义
|
21 |
|
22 | 如果模块以function的形式暴露出去,则这个function会被当作构造模块实例的工厂方法,Loader会调用这个function获取模块的实例,同时可以传递一个context参数作为工厂方法的参数。其他情况则直接把加载到的模块返回。
|
23 | ```javascript
|
24 | module.exports = function(context) {
|
25 | return {}; // return some module instance
|
26 | };
|
27 | ```
|
28 |
|
29 | ##安装
|
30 | ```
|
31 | npm install pomelo-loader
|
32 | ```
|
33 |
|
34 | ##用法
|
35 | ``` javascript
|
36 | var Loader = require('pomelo-loader');
|
37 |
|
38 | var res = Loader.load('.');
|
39 | console.log('res: %j', res);
|
40 | ```
|
41 | 模块定义成函数,加载
|
42 |
|
43 | ##API
|
44 | ###Loader.load(path, context)
|
45 | 加载path目录下所有模块。如果模本身是一个function,则把这个function作为获取模块的工厂方法,通过调用这个方法获取到模块实例;否则直接返回加载到的模块。
|
46 | ####参数
|
47 | + path 加载的目录
|
48 | + context 如果通过工厂方法加载模块,会将该参数作为初始化参数传给工厂方法。
|