目录
- 什么是模块化?
- CommonJS规范和Node关系
- 模块化的核心
- exports 导出 & require 导入
- 模块加载(持续更新)
什么是模块化?
事实上模块化开发最终的目的是将程序划分成一个个小的结构;
这个结构中编写属于自己的逻辑代码,有自己的作用域,定义变量名词时不会影响到其他的结构;
CommonJS规范和Node关系
我们需要知道CommonJS是一个规范,最初提出来是在浏览器以外的地方使用,并且当时被命名为ServerJS,后来为了体现它
的广泛性,修改为CommonJS,平时我们也会简称为CJS。
Node 是 CommonJS在服务器端一个具有代表性的实现;
Browserify是CommonJS在浏览器中的一种实现;
webpack 打包工具具备对CommonJS的支持和转换;
模块化的核心
导入和导出
导出
exports 和 module.exports 可以负责对模块中的内容进行导出
require 函数可以帮助我们导入其他模块 (自定义、系统、第三方库模块)
exports 导出 & require 导入
exports是一个对象,我们可以在这个对象中添加很多个属性,添加的属性会导出;
导出
let FriendName = "康康"
exports.FriendName = FriendName
// 两秒后, 修改一下 FriendName
setTimeout(()=>{
exports.FriendName = "芜湖"
},2000)
导入
const bar = require('./bar.js');
console.log(bar.FriendName)
setTimeout(() => console.log(bar.FriendName),5000)
结果
康康
芜湖
说明
也就是require通过各种查找方式,最终找到了exports这个对象;
并且将这个exports对象赋值给了bar变量;
bar变量就是exports对象了;
所以后面
setTimeout(()=>{
exports.FriendName = “芜湖”
},2000) 一定要 exports.FriendName 才可以修改 FriendName