【发布时间】:2015-01-08 14:25:53
【问题描述】:
如何调用 requireJS require(['app'], function() {});整个应用程序只在开始时执行一次,以便任何后续 require(["..."], function(...){});不需要包裹在 require(['app']?
这是我的设置:
1) 加载 require.js
<script data-main="js/app.js" src="requirejs/require.min.js"></script>
2) 正确配置 app.js 垫片和 basUrl。
requirejs.config({
baseUrl: "scripts/js",
paths: {
"jquery": "../bower_components/jquery/dist/jquery.min",
"modernizr": "../bower_components/modernizr/modernizr",
.
.
.
},
shim: {
"jquery.migrate": ['jquery'],
.
.
.
}
});
3) 不同页面动态加载JS:
// Home Page
require(['app'], function() {
require(["jquery", "foundation", "foundation.reveal"], function ($, foundation, reveal){
$(document).foundation();
});
});
// Catalog Page
require(['app'], function() {
require(["jquery", "lnav/LeftNavCtrl","controllers/ProductCtrl", "controllers/TabsCtrl"], function ($, NavCtrl, ProductCtrl, TabsCtrl){
$(function() {
NavCtrl.initLeftNav();
});
});
});
除非我每次调用 require("...") 以加载外部 JS 或 AMD 模块时都使用 require(['app'], function()) 进行包装,否则应用程序不会初始化并且我会收到 JavaScript 错误。上面的代码有效,但效率不高。
在我尝试加载脚本之前,有没有办法启动我的 requireJS 应用程序?
我尝试在加载 require.min.js 后立即调用:
require(["app"], function (app) {
app.run();
});
但它没有工作。
【问题讨论】:
标签: javascript requirejs amd