CommonJS

Node.js采用的是CommonJS规范,每一个js文件就是一个模块,文件的路径就是模块,每个模块都是一个独立的作用域; 每个文件的对外接口是module.exports,这个对象的所有属性和方法都可以被其它文件导入; require方法用于加载其它模块,模块可以被加载多次,但是只会在第一次加载时运行,然后就被缓存起来,以后再加载就直接运行缓存结果。想要模块再次运行必须重新加载;

模块预定变量

在编写每个模块时,都有requireexportsmodule三个预先定义好的变量可供使用。

module对象:可以访问到当前模块的一些相关信息;

  • module.id:模块标识符,通常是带有绝对路径的模块文件名
  • module.filename:模块文件名,带有绝对路径
  • module.loaded:模块是否已加载
  • module.parent:调用该模块的模块
  • module.children:该模块要用到的其它模块
  • module.exports:模块对外输出值

exports对象:当前模块导出对象,用于导出模块共有属性和方法。exports其实指向module.exports对象:exports === module.exports。其他模块使用require加载模块时加载的是module.exports对象,而不是exports对象,这点需要特别注意

exports = {
    name:"Kevin",
    hello:function(){
        console.log("Hello Node");
    }
}

require函数:用于加载和使用别的模块

require载入并执行一个javascript文件,然后返回该模块的module.exports对象

  • 使用相对路径加载:var m1 = require('module/m1')
  • 使用绝对路径加载:var m1 = require('/workspace/module/m1')
  • 使用json文件加载:var m1 = require('data.json')

模块初始化

模块在第一次加载的时候执行,并在执行过程中初始化对象; 初始化后的对象会被缓存起来重复利用,之后每次加载模块都不会执行初始化过程,模块中的变量状态会被保存;

results matching ""

    No results matching ""