浅谈 Node 模块

Photo by niko photos on Unsplash

在 Node.js 模块系统中,每个文件都被视为一个独立的模块。

相比其他语言,Node.js 模块有两个显著的特点。

模块具有单独的作用域

和其他语言(比如 C 语言)一样,

每一个单独编制的 Node.js 文件都有一个单独的作用域。

其中定义的任何变量除非通过 module.exports 暴露,否则对外不可见。

单个文件中的代码都被这样封装了起来。

(function (exports, require, module, __filename, __dirname) {
     // your code is here
});

所以当你执行的时候,其实执行的是被 Node.js 封装后的代码。

模块默认只被加载一次

和其他脚本语言不同。Node.js 的模块系统具有缓存“cache”机制。

这意味着在程序运行的生命周期中,require 调用的模块代码只会执行一次。

//test.js
console.log('cache');

//index.js
require('cache');  //only output once 'cache'
require('cache');  //no output

参考链接

Requiring modules in Node.js: Everything you need to know

In what scope are module variables stored in node.js?

Is there a way to “require” a JS file only once in nodejs?

发表评论

电子邮件地址不会被公开。 必填项已用*标注