Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 模块作为文件夹,但文件夹下的index.js仅包含一些require语句_Javascript_Node.js - Fatal编程技术网

Javascript 模块作为文件夹,但文件夹下的index.js仅包含一些require语句

Javascript 模块作为文件夹,但文件夹下的index.js仅包含一些require语句,javascript,node.js,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'); }

我正在学习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');

没有找到出口。我想知道这些要求是如何工作的。

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

他们所做的不是让每个模块独立且不可知(除了via requires),而是创建一个名为“extend”的对象(在extend.js中查找),然后每个单独的文件(例如../init、/migrate等)都需要extend.js,并以某种命名空间的方式在其上挂起新的对象和函数


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

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

我已经读过了。谢谢你的评论,但这并不能解释我的困惑。@Paul,你说得对。我已经删除了我的评论。