学会node.js(三)

common.js规范

nodejs由许多模块组成,每个模块就是一个文件,node模块采用了commonjs规范。
根据commonjs规范,一个单独的文件就是一个模块,每一个模块都是单独的作用域也就是说,在一个文件定义的变量,都是private的,对其他文件是不可见的。

var x = 5;
var add = function(value){return value + x;}

上面代码中,变量x和函数add,是当前文件private的,其他文件不可见。
如果想在多个文件中分享变量,必须定义为global的属性。

global.a = a;

上面的a变量,可以被所有的文件读取,当然,这样的写法是不推荐的。
commonjs规定,每个文件的对外接口是module.exports对象,这个对象的所有属性和方法,都可以被其他文件导入。

module对象

每一个模块内部,都有一个module对象,代表当前模块,它有以下属性:

  • module.id 模块的识别符 通常是带有绝对路径的模块文件名
  • module.filename 模块的文件名, 值为此模块的绝对路径
  • module.loaded 返回一个布尔值,表示本模块是否已经加载完成
  • module.parent 返回一个对象,表示调用该模块的模块
  • module.children 返回一个数组,代表该模块要用到的其他模块
学会node.js(三)_第1张图片
666.png

模块的加载规则

学会node.js(三)_第2张图片
aa.jpg

查找文件的规则

学会node.js(三)_第3张图片
aa.jpg

如何判断模块是直接被执行还是被调用?

if(require.main === module){
    console.log("直接执行")
}else{
    console.log("调用执行");
}

你可能感兴趣的:(学会node.js(三))