假设咱们有个组件名为Acomponent.js, 是架构封装的,里面依赖另外一个公司公用库common.js; 那咱们引入Acomponent.js的时候,怎么知道要引入common.js? 看文档? demo写的每每忘掉写这些,若是相似common.js太多,那只能引入后人工排错; 事实上做为一个使用方,我并不想关心这些;html
java 的maven和.net的Nuget 的引入,就是为了解决相互依赖这种问题; 使用方引入一个包,并不须要挨个引入它须要的包,彻底自动管理;前端
而js前端模块化规范也须要相似的组件管理, AMD、CMD规范应运而生:java
个人理解,maven、 nuget、 requirejs、 seajs 都是同样的东西,就是包管理器
jquery
AMD的表明require.js ,CMD的表明sea.js;git
二者的区别主要是加载时机,其实都是先加载再执行, 对于依赖的模块,AMD 是提早执行,CMD 是延迟执行 github
CMD 推崇依赖就近,AMD 推崇依赖前置 https://www.zhihu.com/question/20351507/answer/14859415架构
实际应用的话建议用require.js ,不少地方都在说seajs不行啦,好比 https://github.com/seajs/seajs/issues/1605框架
关于requirejs的用法就不写了,找到一个比较好的转载下到博客园来 http://www.cnblogs.com/binlin1987/articles/7060822.html异步
之前的项目大多这么几个js:maven
jquery.js 这个不说了,必备
easyui.js 或者 jqueryui.js 或者 kendo.js ;这个都是外部组件框架
common.js 公司内部公用库,解决日期转换,数字精度转换等公用方法
XXXcomm.js 公司内部组件库,架构封装的组织机构,人员管理等结构树组件
XXXcomponent.js 偶尔easyUI,kendoUI等组件不够用的时候额外加个三方组件,不必定有
这些js很少,没有依赖到必须异步延迟加载的地步;
页面结构简单,XXXcomm.js 公司内部组件实际只有三五个,顶多依赖于jquery和common.js, 封装到了一个js文件中 ,依赖不复杂,页面头部一次引入就好,忘不掉;
好吧,仍是页面简单,js都打包了,总共十个之内的js文件,直接加到html头就能够了,不会发生漏掉js致使组件报错 :) 并且组件封装的时候,也会特别注意最好不要依赖jquery之外别的东西;再复杂点的页面,自定义组件不少,依赖太严重的时候,确实须要requirejs帮助管理,在每一个组件内部写好依赖,使用方无需关注,
往长远看,新项目启动的时候,加入requirejs比较好,学习成本不大,半天就会用了,好处多多