2011-05-25 67 views
3

在CouchDB的指南,Managing Design Documents,他們指出你應該在哪裏存儲你的couchapp模板?

的_attachments目錄包含保存到沙發設計文件作爲二進制附件文件。 CouchDB直接提供附件(而不是將它們包含在JSON包裝中),所以這是我們存儲JavaScript,CSS和HTML文件的地方,瀏覽器將直接訪問它們。

然後進一步下來,他們創建一個單獨的文件夾來存儲他們的模板,_attachments文件夾外。這是我現在一直困惑的一段時間。他們只有在我的show功能中才能夠包含模板的時候,他們只能將它們放在_attachments文件夾之外。

我可以將我的模板放在_attachments文件夾中,還是應將它們放在_attachments文件夾之外?

如果我可以/應該把它們放在_attachments文件夾中,我怎麼能在我的show功能中調用它們?

回答

2

如果你想呈現模板服務器端(_show_list功能),他們不得在_attachments因爲表演和列表功能用不上爲附件。在這些函數中,變量this是從設計文檔複製的Javascript對象。 this.templates.foo將來自項目中的templates/foo.html文件。

如果你想呈現模板客戶端(瀏覽器)的一面,他們可以附件中,設計文件。這取決於什麼對你更好。通過附件中存儲的模板,您可以直接獲取它們,並在客戶端上使用它們;你可以簡單地鏈接到你的應用程序或網頁。您也可以將模板留在設計文檔中,讓客戶端獲取整個文檔。然後,客戶端可以使用它想要的任何模板從ddoc。

+0

不需要將模板放在_attachments中進行客戶端呈現。您可以訪問客戶端上的設計文檔,然後您可以從那裏獲取它們。這就是例如事件。這也可以更高效,因爲您可以通過一個HTTP請求獲取全部內容。 – 2011-05-25 21:16:24

+0

好點。我會在答案中澄清。 – JasonSmith 2011-05-26 00:24:05

+0

嗨!這正是我正在尋找的。那麼,我將如何存儲我的模板?通常我會在我的html頁面中有一個帶有meme-type text/template的腳本標記,然後用jquery抓取它。我需要在模板頂級屬性下的設計文檔中存儲什麼? – Costa 2012-04-02 19:04:44

2

作爲一般規則,您應該在_attachments文件夾中放置任何要直接提供給客戶端的資源。

couchapp腳本確實把所有其他的東西放在設計文檔中。

沙發的服務器端渲染mustache模板。 It gets the templates through the design document

Mustache.to_html(ddoc.templates.index, stash, ddoc.templates.partials, List.send); 

您也可以選擇通過CouchDB的API,以服務模板作爲附件,找回它們並使其客戶端。

或者您可以將它們保留在設計文檔中,檢索包含客戶端模板的設計文檔並呈現模板客戶端。

在客戶端和服務器上都有Javascript,給你很大的自由。