# 模块化
# 初期:全局变量时代
<script src="jquery.js"></script>
<script src="main.js"></script>
<script src="other.js"></script>
1
2
3
2
3
问题:变量冲突,污染全局作用域,不利于多人开发及维护
# 模块化雏形:立即执行函数
使用IIFE(Immediately-Invoked Function Expression)创建私有作用域,避免全局命名污染
(function() {
// ...
})()
1
2
3
2
3
jQuery早期的依赖处理以及模块加载方案就是IIFE
# CommentJS
- 模块定义:提供了exports对象用于导出当前模块的方法或变量
- 模块引用: 定义了
require()
方法,这个方法接收模块标识,以此将一个模块引入到当前运行环境中 - 模块标识