Javascript 呼叫require([';app';])仅一次
我如何调用requireJSrequire(['app'],function(){});仅在整个应用程序开始时进行一次,以便任何后续的都需要([“…”],函数(…){});不需要在require(['app']中包装 这是我的设置: 1) 加载require.jsJavascript 呼叫require([';app';])仅一次,javascript,requirejs,amd,Javascript,Requirejs,Amd,我如何调用requireJSrequire(['app'],function(){});仅在整个应用程序开始时进行一次,以便任何后续的都需要([“…”],函数(…){});不需要在require(['app']中包装 这是我的设置: 1) 加载require.js <script data-main="js/app.js" src="requirejs/require.min.js"></script> 3) 在不同页面上动态加载JS: // Home Page re
<script data-main="js/app.js" src="requirejs/require.min.js"></script>
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();
});
但它不起作用 RequireJS中没有规定确保在加载任何其他模块之前始终加载特定模块,而不是让您的第一个模块加载其余模块。您试图做的是在多个页面之间共享您的第一个模块,这样它就无法执行加载每个页面特定内容的工作 解决此问题的一种方法是使用常规的
脚本元素加载app.js
:
<script src="requirejs/require.min.js"></script>
<script src="js/app.js"></script>
实际上,这就是我决定在我目前正在开发的应用程序中启动模块的方式。诚然,由于额外的网络往返,它并没有得到应有的优化,但就我正在开发的应用程序而言,它们仍处于非常繁重的开发阶段,我更愿意将此优化留待以后进行
请注意,通常您不想使用script
加载RequireJS模块,但您的app.js
不是一个真正的模块,因为它不调用define
,所以这是可以的
另一种选择是使用Grunt、Gulp、Make等构建工具,在每页创建一个app.js
,并让每页加载自己的app.js
文件。此文件将包含配置和第一个require
调用,以加载特定于您页面的模块。我同意这不是最理想的解决方案,因为它加载了app.js两次,但目前似乎正在工作。在我找到更好的解决方案之前,我会一直使用它。
<script src="requirejs/require.min.js"></script>
<script src="js/app.js"></script>
<script>
require(["jquery", "foundation", "foundation.reveal"], function ($, foundation, reveal){
$(document).foundation();
});
</script>