0

I am learning the source code of hexo, a project based on node.js. And there is a file init.js:

if (results.config){
require('./plugins/tag');
require('./plugins/deployer');
require('./plugins/processor');
require('./plugins/helper');
require('./plugins/filter');
require('./plugins/generator');
}

why these require statements have no reference? So I checked each index.js under these folder(e.g. tag), the index.js is looking like:

require('./init');
require('./config');
require('./generate');
require('./server');
require('./deploy');
require('./migrate');
require('./new');
require('./routes');
require('./version');
require('./render');

No exports found. I am wondering how these requires work.

4

2 回答 2

0

我查看了您正在谈论的来源,您的问题的基本答案是那些需要运行的代码。通常,您需要进行某种导出以使用这些文件中的对象是对的,但是 hexo 有点不标准。

他们所做的是创建一个名为“extend”的对象(查看extend.js),然后创建每个单独的文件(例如./init、./ migrate 等)需要 extend.js 并以一种命名空间的方式在其上挂起新的对象和函数。

如果您查看这些文件的末尾,您会看到一些对 extend.tag.register 和其他文件的调用。模块在需要时被缓存,因此在实践中它的行为类似于其他语言中的单例。

于 2013-07-30T23:17:58.987 回答
0

正如 Paul 所指出的,您看到的需求本身应该被视为功能单元,而不是返回任何有用的值。每个文件都调用一个函数来修改内部状态。

于 2013-07-30T23:21:49.723 回答