3

在 couchDB 指南管理设计文档中,他们指出

_attachments 目录包含作为二进制附件保存到沙发设计文档中的文件。CouchDB 直接提供附件(而不是将它们包含在 JSON 包装器中),因此这是我们存储浏览器将直接访问的 JavaScript、CSS 和 HTML 文件的地方。

然后再往下,他们在 _attachments 文件夹之外创建了一个单独的文件夹来存储他们的模板。这是让我困惑了一段时间的事情。我能够在我的显示函数中包含模板的唯一方法是它们是否位于 _attachments 文件夹之外。

我可以将我的模板放在 _attachments 文件夹中,还是应该将它们放在 _attachments 文件夹之外?

如果我可以/应该将它们放在 _attachments 文件夹中,我如何在我的显示函数中调用它们?

4

2 回答 2

2

作为一般规则,您应该将要直接提供给客户端的任何资源放入 _attachments 文件夹中。

couchapp 脚本确实将所有其他内容都放在了设计文档中。

Sofa 对mustache模板进行服务器端渲染。它通过设计文档获取模板

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

您还可以选择将模板作为附件提供,通过 CouchDB 的 API 检索它们并将它们呈现在客户端。

或者您可以将它们保存在设计文档中,在客户端检索包含模板的设计文档并在客户端呈现模板。

在客户端和服务器上都有 Javascript,给你很大的自由。

于 2011-05-25T05:53:01.587 回答
2

如果要在服务器端(_show_list函数)呈现模板,它们不能在 _attachments 中,因为显示和列表函数无权访问附件。在这些函数中,变量this是一个 Javascript 对象,从设计文档中复制而来。this.templates.foo将来自templates/foo.html您项目中的文件。

如果要在客户端(浏览器)端呈现模板,它们可能在附件中,或者在设计文档中。这取决于什么对你更有效。使用附件中存储的模板,您可以直接获取它们,并在客户端使用它们;您可以简单地在您的应用程序或网页中链接到它。您还可以将模板保留在设计文档中,让客户获取整个文档。然后,客户端可以从 ddoc 使用它想要的任何模板。

于 2011-05-25T05:53:26.833 回答