前端模块化总结——CommonJS

CommonJS

Node 应用由模块组成,采用 CommonJS 模块规范。

范例

a.js

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

module.exports.x = x;
module.exports.addX = addX;

b.js

var example = require('./this.js');

console.log(example.x);     // output: 5

说明

CommonJS规范规定,每个模块内部,module变量代表当前模块。这个变量是一个对象,它的exports属性(即module.exports)是对外的接口。加载某个模块,其实是加载该模块的module.exports属性。

module对象

打印a.js的module对象

// a.js
...
module.exports.x = x;
module.exports.addX = addX;
console.log(module);

输出结果

Module {
  id: '.',
  exports: { x: 5, addX: [Function: addX] },
  parent: null,
  filename: 'E:\\2.study\\backbone\\app\\a.js',
  loaded: false,
  children: [],
  paths:
   [ 'E:\\2.study\\backbone\\app\\node_modules',
     'E:\\2.study\\backbone\\node_modules',
     'E:\\2.study\\node_modules',
     'E:\\node_modules' ] }

由此可见,module拥有id、exports、parent等相关属性

module对象属性解释

  • module.id 模块的识别符,通常是带有绝对路径的模块文件名。
    • 如果parents为null,返回.
    • 如果parents属性不为null,则返回当前文件的绝对路径
  • module.filename 模块的文件名,带有绝对路径。
  • module.loaded 返回一个布尔值,表示模块是否已经完成加载。
  • module.parent 返回一个对象,表示最先引用该模块的模块。
  • module.children 返回一个数组,表示该模块要用到的其他模块。
  • module.exports 表示模块对外输出的值
module使用方法
  • module(模块)

详解

  • CommonJS规范
  • require() 源码解读

你可能感兴趣的:(前端模块化总结——CommonJS)