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