初探前端模块化规范(AMD,CommonJS,UMD,CMD)
以前,开发中我们通常使用整套框架(easyui,bootstrap),不得不说,easyui的自定义打包下载,让我很困惑,因为那个时候,需要手动跟踪组件依赖,也就是说,你需要自己手动下载相关文件,并注意在页面的引入顺序(好吧,有点耐心,细致点,总能解决的)。 现在,项目规模的增长,业务复杂度的增加,以及客户对交互与ui的要求不断提高。我们基本不再使用整套框架,都是选择开源的单一组件,各种组合,来实现相关业务。我们需要引入大量的插件文件,页面引入时,如何避免组件的彼此冲突,相互干扰,成为了很尖锐的问题。(曾经被select.js重写$坑过的朋友应该有感触)。 为了解决这个问题,两种竞争关系的模块规范AMD和CommonJS问世了,它们允许开发者遵照一种约定的沙箱化和模块化的方式来写代码,这样就能避免“污染生态系统”。 一 AMD( Asynchronous Module Definition ) 异步模块加载--主要适用在web客户端 以require.js为主力,在社区推进规范发展。 下面是只依赖jquery的模块foo的代码: // 文件名: foo.js define(['jquery'], function ($) { // 方法 function myFunc(){}; // 暴露公共方法 return myFunc; }); 还有稍微复杂点的例子