【问题标题】:How can I properly refresh a Durandal SPA web app when new views are added?添加新视图时,如何正确刷新 Durandal SPA Web 应用程序?
【发布时间】:2013-05-13 23:07:28
【问题描述】:

我刚开始使用初学者工具包玩 Durandal。我添加了一个非常简单的新视图/视图模型组合(本质上是示例中现有视图的复制/粘贴)和 mapNav()'d 路线。

当我尝试刷新浏览器时,问题正在发生……新视图根本没有出现。它不在导航栏中,我也无法通过在地址栏中键入直接导航到视图。我知道代码是(或应该是?!)正确的,因为如果我在不同的浏览器中访问该页面,所有内容都会显示出来。

Durandal 是否有某种浏览器缓存?有时 F5 或 Ctrl+F5 可以刷新,有时不能。我也无法深层链接到特定的“页面”。即:

http://localhost:52625/#/newpage 只是给我一个空白

我错过了什么?

【问题讨论】:

  • 你使用的是哪个浏览器
  • 我在 Firefox、Chrome 和 IE9 中观察到类似的行为。 IE9 似乎“最难”刷新。

标签: single-page-application durandal


【解决方案1】:

我在 Chrome 中使用的选项是打开开发人员工具并右键单击刷新按钮。有一个“空缓存和硬重新加载”选项,它总是为我解决这个问题。我不知道 IE 中的等价物,但试试这个,看看它是否能解决您的问题。

【讨论】:

  • 太棒了!我使用 Chrome 开发者工具已经很多年了,我刚刚看到了新的刷新功能!
【解决方案2】:

大多数浏览器都会缓存通过 RequireJS 返回的模块,这是 Durandal 获取其模块和视图模型的方式。

CTRL+F5 没有帮助,因为它只是刷新了初始页面 - 所有模块仍然使用 javascript (RequireJS) 请求,因此它们通常首先从缓存中提取。

我发现最好在浏览器的开发人员工具中禁用缓存。这样做将确保所有网络请求都直接从源加载,而不是从缓存中加载。

有关更多信息,请参阅此问题:Debugging when using require.js cache

另一种解决方案是配置 RequireJS 以设置其 urlArgs 属性:https://stackoverflow.com/a/8479953/91189

这个解决方案工作正常,但调试起来更困难,至少在 Chrome 中是这样,因为每次加载模块时都会丢失断点,因为从技术上讲,每次请求的文件都不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2019-04-05
    相关资源
    最近更新 更多