假設咱們有個組件名爲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比較好,學習成本不大,半天就會用了,好處多多