2014-03-04 34 views
2

我是Backbone的新手。我創建了一個由2個視圖組成的非常簡單的項目,並使其工作。但難以理解它在幕後的工作。不理解Backbone如何工作

考慮一下:

  1. 我有兩個意見:一是視圖將顯示,當應用程序被加載(它會顯示一個按鈕,從一個模板得到)。並點擊第一個視圖中的按鈕,第二個視圖將呈現一些虛擬文本(再次從模板獲取)。

  2. 我沒有在這個應用程序中使用任何模型/集合。

  3. 所有文件都存儲在本地Web服務器(Apache Tomcat)中。

情景

予加載的應用程序。在控制檯中,我看到使用HTTP GET獲取的所有文件。我現在看到有第一個按鈕的View。我現在關閉了Web服務器並清除了瀏覽器緩存。不刷新瀏覽器,我點擊按鈕。我在第二個視圖中看到一些虛擬文本。

問題:

  1. 當應用程序負載時,將所有的JS/HTML文件被保存?因爲我看到Backbone是一個客戶端MVC,在我的情況下,不會有任何服務器調用。瀏覽器如何呈現不同的視圖(所有信息都必須存儲在某個地方,對嗎?)。

  2. 我認爲我的第一個問題的答案是瀏覽器緩存。但考慮到上述情況,即使在清除緩存後,我又如何看到第二個視圖?

感謝您花時間閱讀這麼長的問題。

注意:沒有發佈任何代碼,因爲我沒有問題的代碼。

回答

4

您的應用存儲在內存中,並操縱文檔對象模型(DOM)來創建顯示的新HTML(請參閱https://developer.mozilla.org/en/docs/DOM)。通過修改DOM,您可以更改用戶所看到的內容。如果您考慮「正常」編程,每次將數據放入數組中時,都不會寫入磁盤:它存儲在RAM中,並使用我們知道的方便抽象作爲數組訪問它(但這只是RAM中的一系列位)。

客戶端應用程序也會發生同樣的情況:每次你做這樣的事時,它不一定會持久化(即發送到服務器):事物可以存儲在內存中,我們使用一個稱爲DOM的方便抽象操縱這些東西而不會發瘋。

瀏覽器緩存(正如其名稱所暗示的)緩存:瀏覽器​​首先查找某些內容以節省時間,但以其他方式正常提取數據。想想做一個三明治:如果你仍然餓,你會留下刀,麪包等。想着「也許我會盡快做出另一個」。這樣,如果你確實需要另一個三明治,你會節省時間,因爲一切都準備好了。

但是,如果你想做一個三明治,刀和麪包還沒有坐下來,沒有問題:你只是從櫃子裏拿出來。它不會阻止你吃三明治。瀏覽器緩存工作原理相同...

希望這有助於!

+1

+1對於三明治 – Jeff

+1

http://imgur.com/5P920aw –

+1

愛三明治比喻! – pushplaybang

0
  1. 的文件存儲在內存中,主要是你要求的JavaScript代碼,這將是擱置,直到你執行它,並且執行時會操作DOM和渲染相應的視圖。

  2. 瀏覽器緩存的工作方式不同,比如說您再次刷新瀏覽器(如果您之前沒有清除緩存),您會注意到該應用的加載速度會比以前更快,因爲瀏覽器會加載文件存儲在緩存中而不是等待服務器響應。