前一段時間,由於一些事吧這個習慣落下了,如今爭取從新撿起來。javascript
最近開始自學requireJS,爲了更好的掌握,因此寫出一個自我理解的博客供參考。html
分割線-------------------------java
首先,學習requireJS,要知道什麼是requireJS.node
requireJS是一個可在js和node環境下運行的一個很是小巧的一個AMD規範下的js模塊載入框架,通俗的理解爲模塊加載器。瀏覽器
相信開始學習requireJS的必定對JS代碼的模塊化有一個初步的瞭解了。而requireJS主要解決了兩大問題框架
第一。在傳統的模塊化封裝中必定對那難堪入目的引入方式和引入的前後順序有很大的排斥和煩惱。異步
<script type="text/javascript" src="a.js"></script> <script type="text/javascript" src="b.js"></script> <script type="text/javascript" src="c.js"></script> <script type="text/javascript" src="d.js"></script> <script type="text/javascript" src="e.js"></script> <script type="text/javascript" src="f.js"></script> <script type="text/javascript" src="g.js"></script> <script type="text/javascript" src="h.js"></script> <script type="text/javascript" src="i.js"></script> <script type="text/javascript" src="j.js"></script>
而requireJS很好的解決了這個問題,(在以後的講述中會講到解決方式)async
第二。相信你們應該也遇到過JS阻塞瀏覽器渲染這個問題。模塊化
<!DOCTYPE html> <html> <head> <title></title> </head> <body> <span>hello world</span> <script type="text/javascript"> alert('1'); </script> </body> </html>
你會發現,瀏覽器運行後會先執行alert,這時候頁面應該是一片空白,點擊肯定後在加載body中的內容。函數
這就是JS阻塞瀏覽器渲染致使的。
有寫同窗就會說,能夠增長async和defer什麼的,也能夠避免出現阻塞!
其實這個想法很好,我以前也是這麼想的。可是我沒考慮到的是,當引入外部js過多的狀況下,這種方式很差控制異步加載的順序,致使出現錯誤。
而如何控制加載順序,那麼就有回到了第一個問題了。requireJS會有好的幫咱們處理好這些顧慮。
這也就是咱們下一章要講的依賴的問題。
這裏順便給同窗們簡單的描述下AMD和CMD的概述和區別
AMD:是"Asynchronous Module Definition"的縮寫,意思就是"異步模塊定義"。它採用異步方式加載模塊,模塊的加載不影響它後面語句的運行。全部依賴這個模塊的語句,都定義在一個回調函數中,等到加載完成以後,這個回調函數纔會運行。
CMD:是"Common Module Definition"的縮寫,意思就是「經常使用模塊定義」。它採用的是延遲加載模塊,使用的時候加載所須要的模塊,定義在惟一的參數裏面邊封裝,邊加載,邊依賴。
AMD和CMD的本質區別就是:amd採用的是依賴前置,而cmd採用的是延遲依賴。
requireJS的初步瞭解先講到這裏,相信你們應該和我同樣,有了必定的瞭解。
下一章節描述,requireJS的依賴和經常使用的API。也但願和你們能共同進步