JS模块化 -- COMMONJS

CMJ 文件是一个模块,私有,内置两个变量 module require (exports = module.exports);
【JS模块化 -- COMMONJS】一个引入 一个导出,就构成了通信的基本结构
需要注意两个问题

  1. 缓存, require会缓存一下,所以
    // a.js var name = 'morrain'; var age = 18; exports.name = name; exports.getAge = function(){ return age; } // b.js var a = require('a.js'); console.log(a.name); // 'morrain' a.name = 'rename'; var b = require('a.js'); console.log(b.name)// 'rename'

  2. 引用拷贝还是值拷贝 (CMJ 是值拷贝)
// a.js var name = 'morrain'; var age = 18; exports.name = name; exports.age = age; exports.setAge = function(a){ age = a; }// b.js var a = require('a.js'); console.log(a.age); // '18' a.setAge(19); console.log(a.age)// '18'

  1. 运行时加载 / 执行时加载 (多阶段,异步) ESM

    推荐阅读