module作为文件夹,但该文件夹下的index.js只包含一些require语句

时间:2013-07-30 22:48:03

标签: javascript node.js

我正在学习hexo的源代码,这是一个基于node.js的项目。 并且有一个文件init.js:

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

为什么这些需要的陈述没有参考?所以我检查了这些文件夹下的每个index.js(例如标签),index.js看起来像:

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

未找到导出。我想知道这些是如何工作的。

2 个答案:

答案 0 :(得分:0)

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

而不是让每个模块独立且相当不可知(除非通过要求),他们正在做的是创建一个名为'extend'的对象(在extend.js中查看)然后创建每个单独的文件(例如./init ,./migrate等)需要extend.js并以一种命名空间的方式挂起新的对象和函数。

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

答案 1 :(得分:0)

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