JS模块化 -- COMMONJS

CMJ

文件是一个模块,私有,内置两个变量 module require (exports = module.exports);

一个引入 一个导出,就构成了通信的基本结构

需要注意两个问题

  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

你可能感兴趣的:(javascript)