Javascript 预加载和持久化Durandal视图

Javascript 预加载和持久化Durandal视图,javascript,single-page-application,durandal,Javascript,Single Page Application,Durandal,我正在写一个有着不同观点的水疗中心。所有视图都将显示搜索结果,因此,如果在收到搜索结果时可以填充所有视图,则会更容易。如果我不必在进入时渲染每个视图,它也会加快速度。例如,其中一个视图包含一个贴图,该贴图将受益于某些预加载(而不会受益于重新渲染) 我正在考虑使用Durandal,并研究是否可以预加载Durandal视图,并在切换视图时保持加载状态,以便随时访问任何视图中的DOM元素 是否可以预加载视图并将其加载到Durandal中?如果是的话,我会怎么做 请注意,我是Durandal的新手。为什

我正在写一个有着不同观点的水疗中心。所有视图都将显示搜索结果,因此,如果在收到搜索结果时可以填充所有视图,则会更容易。如果我不必在进入时渲染每个视图,它也会加快速度。例如,其中一个视图包含一个贴图,该贴图将受益于某些预加载(而不会受益于重新渲染)

我正在考虑使用Durandal,并研究是否可以预加载Durandal视图,并在切换视图时保持加载状态,以便随时访问任何视图中的DOM元素

是否可以预加载视图并将其加载到Durandal中?如果是的话,我会怎么做


请注意,我是Durandal的新手。

为什么不能使用隐藏和显示css属性而不是使用视图?因为所有的“视图”都是从同一个数据模型填充的。Durandal将在停用时从DOM取消连接视图,并在视图再次激活时重新连接视图。这意味着视图必须由web浏览器重新呈现,而knockout必须重新应用DOM元素上的所有绑定

Durandal不会多次下载同一模板,因为它使用requirejs和插件进行实际加载。这就减少了对性能的影响,尤其是在以后访问时,当这些文件来自缓存时。此外,可以使用将模板打包到单个文件中,尽管我自己从未尝试过这样做

Durandal在其合成模块上有一个名为的选项,可以在其他设置下找到,这可能值得研究。它不预加载模板,但允许您避免重新附加模板。这是一个在一般情况下不起作用的优化(这就是为什么选择加入),但它可能适用于您的场景


然而,加载外部视图是Durnadal构图的使用方式(尽管看起来像Durandal)。如果您要预加载模板,那么值得考虑不使用compose绑定而直接使用。你们会失去一些Durandal对你们的支持,但若你们考虑完全放弃Durandal,我不认为这会是一个很大的问题。不管怎样,重新创建它都不太困难。

问题在于text.js——一个RequireJS插件。 所以我修改了它,以便使用它来预加载模板逻辑

我已经创建了一个例子。

你的意思是不使用Durandal?这是一个后备计划,但我认为使用某种框架是有益的。它有控制器、路由器、事件、转换等。如果你想做的只是有几个视图共享来自同一数据模型的数据,并且需要同时绑定,那么“是的”,我说的是不要使用Durandal。该应用程序相当大,将有很多html+多个开发人员在使用它,例如,Durandal中的include系统将对项目有益。我不知道Durandal目前是否支持此功能。从我读到的durandal的文档以及SO和google小组提出的其他问题来看,我知道它将从DOM中删除视图,并在视图返回时将其附加回去。这意味着必须重新渲染视图。但是,我不认为渲染对性能有这么大的影响。如果您的视图需要花费太多时间渲染,则必须在durandal的范围之外处理,并且应该是另一个问题。渲染不应该是一个昂贵或耗时的选项。