JS模块化 -- COMMONJS
CMJ
文件是一个模块,私有,内置两个变量 module require (exports = module.exports);
【JS模块化 -- COMMONJS】一个引入 一个导出,就构成了通信的基本结构
需要注意两个问题
- 缓存, 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'
- 引用拷贝还是值拷贝 (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'
- 运行时加载 / 执行时加载 (多阶段,异步) ESM
推荐阅读
- 模块化演变,ESM基础知识、与Node.js,CMS关系
- ModStartCMS模块化万能建站系统v3.1.0 API接口支持,小程序上线
- ModStartCMS模块化万能建站系统v3.0.0|ModStartCMS模块化万能建站系统v3.0.0 会员VIP、访问控制、URL兼容
- Android模块化-----网络模块封装
- Java9之后的模块化烦恼解决(由RocketMQ升级OpenJDK11想到的)
- Webpack|Webpack 原理-从前端模块化开始
- JavaScript|JavaScript 模块化详解
- Node模块加载及包
- C语言代码|C语言代码 模块化实现三子棋
- 深入理解Commonjs规范及Node模块实现