前端模块化开发
By: 陈益国
命名空间的困惑
过长的命名空间对于编码和记忆都是一个负担
依赖文件的困惑
组件的使用者需要关注该组件的每一个依赖
dialog需要依赖drag:
使用时可能就漏掉了drag:
依赖文件的困惑
文件颗粒度小但依赖太多
5173首页开发环境的一堆引用:
单个大文件的困惑
依赖没有了但单个文件的体积却越来越臃肿
图搜开发初期没有自动化合并工具,只能人肉合并:
传统开发模式的主要问题
命名的冲突
代码量巨大的单文件的可维护性
小颗粒度文件的依赖
模块化就是为了解决这些问题
模块化并不是新鲜玩意
Java、python、c#、php等都有 include、import
连css都有***@import
JavaScript在ES6也会增加 import 的功能
JavaScript中目前的模块化方案
Common Module Definition (CMD)
- SeaJS
Asynchronous Module Definition ( AMD )
- RequireJS
其他非标准的实现
- YUI3
- Dojo
- Kissy
CMD 的一个栗子
CMD 规范的定义
define( factory )
factory : 模块体
function( require, exports, module ){
// 模块实现的代码
}
require : 用于加载依赖模块
exports : 用于向外部提供接口
前端模块化开发 来自淘豆网www.taodocs.com转载请标明出处.