這正是像RequireJS一包是。使用像RequireJS這樣的模塊加載器,可以異步加載多個JS文件,並定義加載文件時的回調。
這裏有一個簡單的例子...
而不是加載你的jQuery和/或其它JS文件,只有<script>
加載是RequireJS腳本。
<script data-main="js/app" src="js/require.js"></script>
的data-main
屬性告訴RequireJS加載在/js/app.js
文件,其中包含您RequireJS配置設置。下面是/js/app.js
一個例子:
requirejs.config({
"baseUrl": "js/lib",
"paths": {
"app": "../app",
"jquery": "//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min",
"jqueryMobile": "//ajax.googleapis.com/ajax/libs/jquerymobile/1.4.5/jquery.mobile.min"
}
});
// Load the main app module to start the app
requirejs(["app/main"]);
在這種情況下,/js/app.js
大多用於配置路徑。 app
屬性告訴RequireJS在哪裏查找您的特定應用程序JS,jquery
屬性告訴RequireJS指向jQuery的Google CDN URL的路徑。最後,使用requirejs()
方法加載您的應用程序.js
文件。請注意,所有路徑均離開.js
。
此時RequireJS將會尋找你的app
JS在app/main.js
。在/js/app/
中創建一個名爲main.js
的文件 - 因此您現在有一個/js/app/main.js
文件。
該文件將異步加載來自Google CDN的jQuery和jQuery Mobile文件,幷包含應用程序邏輯的其餘部分。下面是/js/app/main.js
一個例子:
define(["jquery", "jqueryMobile"], function($) {
//jQuery and jQuery Mobile have been loaded.
$(function() {
// Do stuff with jQuery and jQuery Mobile
});
});
這是否有什麼影響?讓我們來看看網絡瀑布怎麼看這些文件加載:
上圖同時顯示jQuery和jQuery Mobile的加載異步。
對於類似演示,請參閱RequireJS jQuery example。
你有沒有嘗試像[是](https://gist.github.com/1231586)的東西嗎? – neoascetic 2012-04-12 00:41:56
不,我沒有。但是,最新版本的jQM確實支持Require.Js。 – 2012-04-30 14:26:32