Durandal 是否在初始加载/前期加载 ViewModels/View 或按需加载它们。
假设我有一个非常大的网站,有 100 个或更多页面/视图,每个视图都有一个相当大的 viewModel。Durandal 会预先加载所有这些吗?
每个视图中的数据调用怎么样,如果预先加载它们会被触发吗?
试图了解杜兰达尔的行为
Durandal 是否在初始加载/前期加载 ViewModels/View 或按需加载它们。
假设我有一个非常大的网站,有 100 个或更多页面/视图,每个视图都有一个相当大的 viewModel。Durandal 会预先加载所有这些吗?
每个视图中的数据调用怎么样,如果预先加载它们会被触发吗?
试图了解杜兰达尔的行为
Durandal 根据需要(按需)加载视图和视图模型。所以在你的例子中,有 100 个视图和视图模型,你只会加载你使用的那些。查看浏览器工具的“网络”选项卡,您可以根据需要看到它们。
此外,一旦它们是本地的,它们就会被缓存在浏览器中,这是一件好事。
如果您的视图模型在“激活”上进行数据调用,那么是的,每次激活它们时都会调用它们。有关生命周期事件的更多信息,请参阅 Durandal 文档。
但是,如果您运行 optimizer.exe,它将打包所有这些并预先将它们一次性(缩小)带到客户端。这不是我在开发过程中做的事情。但是,如果您想在上线后预先加载所有内容,这是一种将整个应用程序本地化的方法。
对于您的应用程序具有 100 多个视图,我可能会在进行时加载,因为任何人都不太可能在一次使用中达到所有 100 个视图(我猜)。这取决于您打算如何使用该应用程序。
我是 durandal 的新手,但我相当确定您有两种选择。
您可以按需加载它们,这是默认设置,也可以将其构建为应用程序,将所有应用程序文件压缩到一个包中。不确定该构建步骤的细节,但大概如果您采用这种方法,那么您的整个应用程序就会一次性下载。
至于每个视图中的数据调用,您通常会在视图模型的激活函数中启动它们。因此,它们只会在您的视图模型被激活而不是完全预先激活时才会发生。
因此,对于您的场景,Durandal 会很好地工作。