这正是像 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/main.js 寻找你的 app 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 。