RequireJS加载我没有的资源'我不想
RequireJS loads resources I don't want to
我在我的应用程序中使用RequireJS,但不太了解它工作的各个方面。
我有main.js
文件,其中描述了依赖关系。我已经启动并运行了Backbone.Router
组件,它触发了不同的application
类(负责创建主视图的类)。你可以在这里看到一些代码。
我可以用requireJS看到的是:即使某些视图还没有被"required"(意味着显式调用require('./sudviews/view)),它仍然被加载,并且在它内部加载所有模板(我使用requireJS文本插件)。如果我正在添加新的应用程序,但它的子视图还没有准备好,但我从未使用过该应用程序——不存在的子视图仍然被加载,我会得到404个错误。
不确定我把每件事都解释清楚了,但希望你们说得对。
看起来您正在使用CommonJS加糖形式的define()。请注意,这只是包装Node/CommonJS代码的一种方便,但AMD模块的操作与Node模块不同。
AMD加载程序将在模块的出厂函数中扫描require(")调用,并确保加载所有模块。否则,通过执行require('./apps/DashboardApp');
,对该模块的同步访问将在浏览器中失败,因为文件IO默认为异步网络IO
如果你想延迟加载一些脚本,那么你需要使用require:的回调形式
require(['./apps/DashboardApp'], function (DashboardApp) {
});
但是这个调用是一个异步调用,所以您必须相应地调整模块的公共API。
因此,基本上,如果您想按需加载依赖项,则需要回调形式的require,因为浏览器中文件IO具有异步性质。
因为RequireJS加载所有必需的依赖项。通过快速查看您的代码,我发现您加载了路由模块,并且路由具有:
var ViewManager = require('ViewManager');
这意味着它将加载ViewManager、ViewManager指定的依赖项以及这些模块所需的其他依赖项。本质上,当您包含require(…)时,它与指定依赖关系是一样的。这将由RequireJS转换为
define(['ViewManager'], ...)
- 使自动完成可搜索下拉菜单don'我不想在点击搜索时显示列表
- RequireJS加载我没有的资源'我不想
- 我想遍历一个对象数组,我不想要任何重复项
- 如何在javascript中调用onclick事件?我没有'我不想在我的HTML页面中使用任何事件
- IE11没有'我不想把重点放在“disabled”元素上
- 可以'我不想用BlackBerry Webworks 2来展示Toast
- 将参数传递给函数I don'我不想立即执行
- Jquery点击事件don'我不想开火
- 我需要创建一个事件侦听器.但是我不想使用任何框架
- 我可以'Don’我不想让我的程序继续下去;m使用document.write,因为它在html中使用JavaSc
- 页面卸载时,出现我不想要的确认框
- 不想返回整个对象,如何过滤掉我不想要的东西
- 当我添加警报(“现在它可以工作”);这个函数有效,但我不想要这个
- 我不想支持在 asp.net mvc web/intranet应用程序中关闭javascript
- 我想创建一个从 50 到 1 的倒计时,但我不想在每个数字之间倒计时相同的时间量
- 尽管设置了标头,但我不想使用 JSONP,但 cors 无法解析
- 表单值,我不想重置它们
- 谷歌地图v3-地图没有'我不想从mysqldb加载标记
- 悬停函数没有'I don’我不想工作
- 等待 ajax 返回的正确方法(我不想使用成功处理程序