javascript - RequireJS 加载我不想加载的资源

标签 javascript requirejs

我在我的应用程序中使用 RequireJS,但不太了解它工作的所有方面。

我有 main.js 文件,其中描述了依赖关系。我有 Backbone.Router 组件启动并运行,它触发不同的 application 类(负责创建主视图的类)。一些代码你可以看到here .

我在 requireJS 中看到的:即使一些 View 还没有被“要求”(意味着显式调用 require('./subviews/view)),它仍然被加载并且在它里面加载所有模板(我使用 requireJS文本插件)。如果我正在添加新应用程序但它的 subview 尚未准备好,但我从未使用过该应用程序 - 仍然加载不存在的 subview 并且我收到 404 错误。

不确定我是否解释清楚了所有内容,但希望您明白了。

最佳答案

看起来您正在使用 CommonJS sugared form of define() .请注意,这只是为了方便包装 Node/CommonJS 代码,但 AMD 模块不像 Node 模块那样运行。

AMD 加载器将扫描模块工厂函数中的 require('') 调用,并确保加载所有模块。否则,通过执行 require('./apps/DashboardApp'); 同步访问该模块将在浏览器中失败,因为文件 IO 默认是异步网络 IO。

如果你想延迟加载某些脚本,那么你需要使用 require 的回调形式:

require(['./apps/DashboardApp'], function (DashboardApp) {
});

但此调用是异步调用,因此您必须相应地调整模块的公共(public) API。

所以基本上,如果您想按需加载依赖项,则需要 require 的回调形式,考虑到浏览器中文件 IO 的异步性质。

关于javascript - RequireJS 加载我不想加载的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12131840/

相关文章:

javascript - 使用requirejs加载具有父子关系的React组件

backbone.js - 在多个 View 中访问集合 - Backbone + RequireJS

javascript - 如果窗口大小低于一定大小,显示不同的内容?

Javascript 参数传递不起作用

node.js - 在 Node js中找不到模块

javascript - 让我的 javascript 函数 requirejs/amd 友好?

javascript - Backbone Marionette 模块已弃用,什么是处理初始化程序和启动事件的好选择?

javascript - 从数组中向下 2 层的对象中选择属性

javascript - esri map 显示信息窗口,无需单击 map

javascript - Internet Explorer 8 CSS 兼容性