【问题标题】:Does durandal Load All the ViewModels/ Views upfront or are they loaded on Demand?durandal 是预先加载所有视图模型/视图还是按需加载?
【发布时间】:2013-03-05 13:43:57
【问题描述】:

Durandal 是在初始加载/预先加载期间加载 ViewModel/View 还是按需加载它们。

假设我有一个非常大的网站,有 100 个或更多页面/视图,每个视图都有一个相当大的 viewModel。 Durandal 会预先加载所有这些吗?

每个视图中的数据调用怎么样,如果预先加载它们会被触发吗?

试图了解杜兰达尔的行为

【问题讨论】:

    标签: single-page-application durandal


    【解决方案1】:

    Durandal 根据需要(按需)加载视图和视图模型。所以在你的例子中,有 100 个视图和视图模型,你只会加载你使用的那些。观看浏览器工具的“网络”选项卡,您可以根据需要看到它们。

    另外,一旦它们是本地的,它们就会被缓存在浏览器中,这是一件好事。

    如果您的视图模型在“激活”上进行数据调用,那么是的,每次您激活它们时都会调用它们。有关生命周期事件的更多信息,请参阅 Durandal 文档。

    但是,如果您运行优化器.exe,它会将所有这些打包并预先一次性(缩小)将它们带到客户端。这不是我在开发过程中做的事情。但是,如果您想在上线后预先加载所有内容,这是一种将整个应用程序本地化的方法。

    对于具有 100 多个视图的应用程序,我可能会在执行过程中加载,因为任何人都不太可能在一次使用中达到所有 100 个视图(我猜)。这取决于您打算如何使用该应用。

    【讨论】:

    • 这就是我想要的按需加载它们。很高兴知道它具有捆绑功能,可供企业离线使用。
    【解决方案2】:

    我是 durandal 的新手,但我相当确定您有两种选择。

    您可以按需加载它们,这是默认设置,也可以将其构建为应用程序,将所有应用程序文件压缩到一个包中。不确定该构建步骤的具体细节,但大概如果您采用这种方法,那么您的整个应用程序就会一次性下载。

    对于每个视图中的数据调用,您通常会在视图模型的激活函数中启动它们。因此,它们只会在您的视图模型被激活而不是完全预先激活时才会发生。

    所以对于你的场景,Durandal 会很好地工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-25
      • 2012-03-01
      • 2013-05-04
      • 1970-01-01
      • 1970-01-01
      • 2019-08-23
      • 1970-01-01
      相关资源
      最近更新 更多