2012-10-25 30 views
9

在Backbone.js的,模型加載和保存是通過AJAX調用來完成。然而,在那裏裝載在頁面加載初始集合,而無需通過AJAX拉下來的最佳做法?我正在嘗試儘可能多地在服務器端渲染。什麼是在Backbone.js的加載初始數據的最佳方法?

在過去,我已經接種包含初始數據狀態,因此它可以被渲染服務器端的JSON字符串JavaScript變量的HTML,但我不知道這是一個很好的做法。

回答

0

您選擇可能會取決於你打算多少要加載的數據以及如何將數據在頁面中使用的方法。

如果大部分所需的數據不會最終落得在網頁上呈現,自舉初始狀態爲JavaScript變量可能不是一個壞的路線。

如果數據直接關係到頁面的呈現,但是,你可能更喜歡解析預渲染的DOM爲主幹應用程序的初始狀態。謹慎的一句話是,這種解析速度會比較慢,特別是對於大型數據集。

如果你最終選擇解析預渲染的內容,那麼我會放回一個small jQuery DOM parser a,這可能對將所呈現的內容映射到準備好Backbone的表單有用。

5

不知道,如果它不一定是最好的做法,而是用JSON 對象無慾無求的HTML的這個方法(而不是JSON 像你描述它,對嗎?)當然是做我的首選方式初始加載。不僅僅是因爲(明顯的)原因,它消除了等待最初的AJAX調用返回的延遲,而且因爲一個較少的開放連接釋放了瀏覽器來加載其他東西(比如img src或whatnot),讓你請稍等。

建議您在使用此方法時,將上述變量放在主體底部的腳本標記(即不在頭部分)中,以便爲頁面上的靜態html元素提供一個機會首先加載和渲染。當document.onLoad觸發時,json數據已準備就緒。

+0

這種方法唯一的缺點,就是我們有一個後端語言生成JavaScript的查詢股價,而你整個「初始化」應用的階段是在一些.erb模板(或JSP/PHP /等),而然後在JavaScript土地。它有時聞起來像意大利麪。 –

1

Backbone docs開始,在腳本標籤中初始化模型並不是一個壞習慣。在我當前的項目中,我決定只設置window.projectData中的普通對象,以便能夠在外部JavaScript中初始化骨幹模型。

<script> 
    ;(window.projectData || (window.projectData = {})).modelName = {/* value */}; 
</script> 
相關問題