一、為什么要使用require.js
首先一個頁面如果在加載多個js文件的時候,瀏覽器會停止網頁渲染,加載文件越多,網頁失去響應的時間就會越長;其次,由于js文件之間存在依賴關系,因此必須嚴格保證加載順序,當依賴關系很復雜的時候,代碼的編寫和維護都會變得困難。
require.js,就是為了解決這兩個問題:
1. 實現js文件的異步加載,避免網頁失去響應;
2. 管理模塊之間的依賴性,便于代碼的編寫和維護。
二、require.js的加載
第一步,去官網下載最新版本,直接放到頁面進行加載
<script src="js/require.js"></script>
加載這個文件可能會導致網頁失去響應,可以將它放到頁面的底部加載,也可以這樣寫
<script src="js/require.js" defer async="true" ></script>
async屬性表明這個文件需要異步加載,避免網頁失去響應。IE不支持這個屬性,只支持defer,所以把defer也寫上。
加載require.js以后,下一步就要加載我們自己的代碼了,也就是入口,可以叫主模塊,如果文件名叫main.js,寫成下面這樣就可以了:
<script src="js/require.js" data-main="js/main"></script> .js后綴可以省略
三、主模塊的寫法
如果主模塊依賴于jQuery可以這樣寫
require(['jquery'], function ($){ alert($); }); 四、require.config()方法
require.config({ paths: { "jquery": "jquery.min", "underscore": "underscore.min", "backbone": "backbone.min" } }); 上面的代碼給出了三個模塊的文件名,路徑默認與main.js在同一個目錄(js子目錄)。如果這些模塊在其他目錄,比如js/lib目錄,則有兩種寫法。
• 一種是逐一指定路徑
require.config({ paths: { "jquery": "lib/jquery.min", "underscore": "lib/underscore.min", "backbone": "lib/backbone.min" } }); • 另一種則是直接改變基目錄(baseUrl)。
require.config({ baseUrl: "js/lib", paths: { "jquery": "jquery.min", "underscor: "underscore.min", "backbone": "backbone.min" } }); • 如果某個模塊在另一臺主機上,也可以直接指定它的網址,比如
require.config({ paths: { "jquery": "https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min" } }); 五、AMD模塊的寫法
require.js加載的模塊,采用AMD規范。也就是說,模塊必須按照AMD的規定來寫。
具體來說,就是模塊必須采用特定的define()函數來定義。如果一個模塊不依賴其他模塊,那么可以直接定義在define()函數之中。
新聞熱點
疑難解答
圖片精選