2011-12-21 26 views
3

我有兩個不同的HTML頁面來提供骨幹應用程序。直到現在,我已將所有js模板放入每個HTML文件中。使用一個大的外部文件與backbone.js的許多JavaScript模板?

現在,我重構了一下,並希望在文件之間共享一些骨幹視圖。當加載無法找到js模板的視圖時,整個應用程序將出錯。我知道合併這兩個方法的正確方法是使用外部js模板,例如使用EJS,每個文件有一個模板,但是,我只想擁有一個包含嵌入<script type='text/template'>的巨大HTML文件並共享模板HTML文件在我的2頁之間。這可能嗎?我嘗試使用AJAX獲取外部js模板並將它們寫入頭部,但骨幹視圖仍無法找到它們。

其他人是否選擇在其中有許多JavaScript模板的文件?我還發現,當我使用ejs時,打開的文件數量難以管理。非常感激任何的幫助。

回答

2

我使用額外的javascript/coffeescript文件並使用underscore's templating來照顧所有事情。通過這種方式,您可以包含模板並將其放入儘可能少(或多個)的文件中。

+0

那麼,你如何識別你想使用的模板?我目前將它們全部用HTML分隔。

1

我對當前項目的所有模板都使用單個文件,它工作得很好。

這是一個Asp.Net網站,所以我將模板文件製作成一個用戶控件,這樣我就可以輕鬆地將它包含在任何使用Backbone的頁面中。

0

如果您通過AJAX獲取所有模板,也許您不必將它們寫入頭部。

您可以發送模板到客戶端爲JSON對象,例如:

{"about":"<p>About</p>...","gallery":"<p>Gallery</p>...","contact":"<p>Contact</p>..."} 

獲取您可以存儲他們爲模板的一些對象(或區域存儲)的內部變量寺廟後,並且,你可以做如下:

var tempStr = templates['about'], 
    template = new EJS({element:{value: tempStr, id: 'about'}}), 
    content = template.render(); 
相關問題