在couchDB指南Managing Design Documents中,他们说明了
_attachments目录包含作为二进制附件保存到Sofa设计文档的文件。 CouchDB直接提供附件(而不是将它们包含在JSON包装器中),因此这是我们存储浏览器将直接访问的JavaScript,CSS和HTML文件的地方。
然后进一步向下创建一个单独的文件夹来存储他们的模板,在_attachments文件夹之外。这一直困扰着我一段时间。他们只能在我的show函数中包含模板,如果它们位于_attachments文件夹之外。
我可以将模板放在_attachments文件夹中,还是应该放在_attachments文件夹之外?
如果我可以/应该将它们放在_attachments文件夹中,我如何在我的show函数中调用它们?
答案 0 :(得分:2)
作为一般规则,您应该在_attachments文件夹中输入您想要直接提供给客户端的任何资源。
couchapp脚本确实将所有其他内容放在设计文档中。
Sofa执行mustache模板的服务器端呈现。 It gets the templates through the design document:
Mustache.to_html(ddoc.templates.index, stash, ddoc.templates.partials, List.send);
您还可以选择将模板作为附件提供,通过CouchDB的API检索它们并在客户端呈现它们。
或者您可以将它们保存在设计文档中,检索包含客户端模板的设计文档并呈现模板客户端。
在客户端和服务器上都有Javascript,为您提供了很多自由。
答案 1 :(得分:2)
如果要渲染模板服务器端(_show
和_list
函数),则不能位于_attachments中,因为show和list函数无法访问附件。在这些函数中,变量this
是从设计文档复制的Javascript对象。 this.templates.foo
将来自项目中的templates/foo.html
文件。
如果要渲染模板客户端(浏览器)端,他们可能位于设计文档中的附件或中。这取决于什么对你有用。使用存储在附件中的模板,您可以直接获取它们,并在客户端上使用它们;您只需在应用或网页中链接到它即可。您还可以将模板保留在设计文档中,然后让客户端获取整个文档。然后,客户端可以使用ddoc中想要的任何模板。