2013-03-03 64 views
3

Durandal在初始加载/预先加载期间加载ViewModels/View还是根据需要加载它们?Durandal是否预先加载所有ViewModels/Views或是否按需求加载?

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

如何在每个视图中的数据调用,将所有这些都触发​​,如果它是加载它们?

试图了解迪朗达尔

回答

4

Durandal根据需要加载视图和视图模型(按需)。因此,在您的示例中,使用100个视图和视图模型,您只能加载使用的视图。观看浏览器工具的“网络”选项卡,您可以根据需要查看它们。

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

如果你的viewmodel的数据调用是“激活”,那么是的,每次你激活它们时都会被调用。有关生命周期事件的更多信息,请参阅Durandal文档。

但是,如果您运行optimizer.exe,它将打包所有这些文件,并将它们一次性提前(缩小)到客户端。这不是我在开发过程中所做的。但是,如果您希望在上线后预先加载所有内容,则可以将整个应用程序本地化。

对于具有100多个视图的应用,我可能会加载,因为任何人都不可能在单个用法中击中所有100个视图(我猜测)。这取决于您打算如何使用该应用程序。

+0

这就是我正在寻找加载它们的需求。很高兴知道它具有可供企业用于脱机使用的捆绑功能。 – 2013-03-04 16:50:46

2

我是新来迪朗达尔但我相当肯定,你有这两个选项的行为。

您可以根据需要加载它们,这是默认设置,或者您可以将其构建为应用程序,将所有应用程序文件缩小为单个程序包。不知道该构建步骤的具体细节,但大概如果你采用这种方法,那么你的整个应用程序就会一次下载。

至于每个视图中的数据调用,您通常会将它们踢到视图模型的activate函数中。所以他们只会在你的视图模型被激活时才会发生,而不是总在前面。

因此,对于您的情况,Durandal会很好地工作。