- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有一个围绕 AMD 模块构建的大型单页应用程序。当用户第一次访问该应用程序的首页时,我们希望初始 JS 负载相当轻,因此我们仅加载最少的 JS 来设置应用程序并加载首页。从那里,用户可以执行“操作 A”或“操作 B”。每个“操作”都需要加载新模块(分别是“module_a”
和“module_b”
)。
module_a
的依赖项为 module_a_1
、module_a_2
、module_a_3
和 module_X
>module_b
的依赖项为 module_b_1
、module_b_2
、module_b_3
和 module_X
请注意,这两个模块都依赖于 module_X
。
现在,如果用户执行“操作 A”,我们会告诉服务器我们想要 module_a
。服务器将 module_a 及其所有依赖项捆绑到响应中。如果用户再次执行“操作 A”,客户端就知道我们已经有了 module_a
,因此无需下载任何新内容。这很容易。
但是假设用户执行“操作 A”,稍后执行“操作 B”。显然我们需要下载module_b
、module_b_1
等。但客户端已经有module_X
。如果 module_X
与 module_b
的请求捆绑在一起,那就太可惜了,因为我们已经有了 module_X
。
是否有一个系统/框架/模式支持请求的 AMD 模块及其依赖项,但不支持客户端已有的依赖项,也许通过某种方式与服务器通信客户端拥有的模块?
最佳答案
Is there a system/framework/pattern that supports the requesting AMD modules and their dependencies but not the dependencies the client already has, perhaps by somehow communicating to the server the modules the client has?
您似乎忽略了 AMD 的要点,因为这正是它的作用 - 如果 module_X
已经加载,则不会再向服务器请求 module_X
.
从问题的字里行间看,我认为你没有正确地表达它。我想情况是这样的:
您没有在模块定义的开头指定所有模块依赖项。使用嵌套的内部需求,您可以延迟加载一些依赖项,直到需要它们为止。结果,您发现内部 require 加载您已经声明为外部依赖项的一部分或另一个内部 require 依赖项的一部分的依赖项。
如果这是问题所在,那么简短的答案是嵌套的 require 需要外部 require 的加载上下文。这是通过将 require
本身指定为依赖项来完成的
require(["require", /* other deps */], function(require, ...){
require(["module_a_1","module_X"], function(moda1,modx){ /*... */});
require(["module_b_1","module_X"], function(modb1,modx){ /*... */});
}
这在 RequireJS 自己的文档中没有得到很好的记录。请参阅https://github.com/jrburke/requirejs/issues/173了解更多详情。
关于javascript - 是否有一个设计模式/系统可以延迟加载捆绑的 AMD 模块而不加载我已经下载的模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24583465/
一段时间以来,我一直在做这个反复出现的噩梦(阅读 - 我的应用程序中的错误)。出于某种原因,某个计时器在我停止后继续发送“Elapsed”事件,即使 在事件本身 计时器“承认”已被禁用!检查一下: /
为了找到 2 个 git 分支的共同祖先,需要做的是: git merge-base branch another_branch 好的。但是……如果两个分支都已经 merge 了怎么办?当我在这种情况
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 1年前关闭。 Improve this
我想要一个相机 View ,可以将图像捕获到本地文件或让用户从本地照片库中选择图像。我想也许有人为此编写了很好的库/代码。也许我可以利用它。已经有好的了吗?谢谢。我只是避免重新发明轮子:) 最佳答案
我从 master 分支创建了一个功能分支。之后有来自功能分支的提交 [F1]。 [F1] -- Feature Branch / [M1]-[M2
我喜欢使用 .NET 进行编程,尤其是 C# 3.0、.NET 3.5 和 WPF。但我特别喜欢的是 Mono .NET 确实与平台无关。 现在我听说了 Mono 中的 Olive 项目。我找不到某种
介绍和搜索 所以我认为我犯了一个严重的错误,我很担心。我已经分析了独立负责人的论坛,我已经接近找到答案,但场景太具体,不适用于我所在的位置。如果您找到可以回答我的问题的特定主题,请链接我。 例如:Ho
我有一个类似于下图的提交图。标记为 * 的提交表示大量提交。 A* | B--------- | | C* D* master 和 cor
我喜欢使用 .NET 进行编程,尤其是 C# 3.0、.NET 3.5 和 WPF。但我特别喜欢的是 Mono .NET 确实与平台无关。 现在我听说了 Mono 中的 Olive 项目。我找不到某种
我们最近接手了一个 .NET 项目,在查看 db 后,我们在某些列中有以下内容: 1)某些列具有诸如" & etc etc 2) 有些有 标签和其他非 html 编码的标签 这些数据
你好,当我导航到应用程序中的另一个页面时出现此错误 我不知道为什么这个错误出现 #0 _AsyncCompleter.complete (dart:async/future_impl.da
我使用以下 C 算法计算数据的 CRC32: #define CRC32_POLYNOM_REVERSED 0xEDB88320 uint32 calcCrc32(uint8* buffer, u
我试图在我的一个测试中断言模型中的字段没有改变。我知道从哲学上这是不正确的,但由于我控制了我需要知道的所有变量,所以我只想检查我的数据库条目是否没有改变。 我愿意接受一个解决方案,该解决方案可以将其转
我是 GitHub 的新手。并通过 Eclipse 使用它我们是两个人在开发一个应用程序。当我在 Git shell 中检查 git status 时,我得到以下状态。 On branch maste
简单代码: std::ifstream file("file.txt"); std::string line; while(getline(file,line)) ; //exhaust file
是的,我又找不到这个 Gradle DSL 方法:'compile()' 问题。 我检查了我有: buildscript { repositories { jcenter()
HTML: articles CSS: #main_menu { float: left; padding-top: 10px; vertical-align: m
我是一名优秀的程序员,十分优秀!