2013-03-03 81 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會很好地工作。

相關問題