Templates 如何在CouchDB中使用html模板

Templates 如何在CouchDB中使用html模板,templates,couchdb,underscore.js,commonjs,kanso,Templates,Couchdb,Underscore.js,Commonjs,Kanso,我到处都在找,想弄清楚这个。我正在尝试从couchdb show和list函数生成html页面。我想利用下划线.js的模板解决方案。我一直关注的部分是如何在show和list函数中包含html模板 我应该把它们存放在哪里?作为附件?然后如何在show和list函数中引用它们。我猜!json和!代码宏没有被使用,我不知道如何使用common js中的require()来实现它 任何帮助都会震撼 谢谢 额外信息:我正在使用Kanso推送我的应用程序,而不是CouchApp。我不熟悉Kanso,但在C

我到处都在找,想弄清楚这个。我正在尝试从couchdb show和list函数生成html页面。我想利用下划线.js的模板解决方案。我一直关注的部分是如何在show和list函数中包含html模板

我应该把它们存放在哪里?作为附件?然后如何在show和list函数中引用它们。我猜!json和!代码宏没有被使用,我不知道如何使用common js中的require()来实现它

任何帮助都会震撼

谢谢


额外信息:我正在使用Kanso推送我的应用程序,而不是CouchApp。

我不熟悉Kanso,但在CouchDB 1.1之前,view/show等。CouchDB中的函数不能包含任何内容。(CouchApp工具有自己的
!包含解决此问题的解决方法。)不再需要这些。CouchDB 1.1增加了CommonJS支持

Tll模板和库必须是设计文档的一部分。您可以通过引用this.some_key来访问原始值(作为字符串);或者通过执行
require(“some_key”)
通过CommonJS加载它们

例如:

exports.example_view = {
    map: function (doc) {
        // this must be placed *inside* the map function
        var example = require('views/lib/example');
        if (doc.num) {
            emit(doc._id, example.fn());
        }
    }
};
()


要在服务器端呈现模板,需要将它们编码为字符串,并像需要其他JavaScript库一样需要它们。(对于浏览器端渲染,通过AJAX works获取附件。)

顾名思义,CouchDB附件是

显示和列表函数支持CommonJS。因此,您只需在设计文档中包含任何库

{ "_id": "_design/example"
, "say_hi": "module.exports = function(person) { return 'Hello, ' + person }"
, "shows":
  { "hello": "function(doc, req) { var hi = require('say_hi'); return hi(req.query.me) }"
  }
}
这个视图看起来像这样

GET /my_db/_design/example/_show/hello?me=Jason

HTTP/1.1 200 OK
Server: CouchDB/1.2.0 (Erlang OTP/R15B)
Date: Fri, 06 Apr 2012 11:02:33 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 12


Hello, Jason

谢谢你的快速回复!这很好,我已经做到了,但是有没有一种方法可以包含html模板(或者css)?从长远来看,将我的模板创建为javascript字符串确实很难维护。是的,在map函数中,
这是对设计文档的引用。如果您在设计文档中有
“hello”:“hello,{{user}}”
,那么在map函数中,您可以引用
this.hello
,并获得字符串
“hello,{user}}”
。非常感谢!这太棒了!嘿,我已经学习了很多关于如何使用CouchDB的知识,有什么方法可以帮助我吗?教别人?向社区添加couchapp?等等,不客气。事实上,我更喜欢@Slartibartfast的答案,因为它已经有了事情如何运作的历史:)@Costa我强烈建议你向CouchDB用户列表发送电子邮件,询问相关问题。如果你想建立沙发应用的体验,我有一百万个应用,我希望社区有,其他人也有想法!谢谢将模板编码为字符串正是我试图避免的。接下来,我将寻找某种预处理器。View/show可以包含任何内容,使用CommonJS。在您的示例中,Kanso(虽然很优秀)是不相关的。map函数中的
require()
出现在CouchDB中。@JasonSmith这很有趣。这是最近的变化吗?为什么CoichApp要包含宏?@Slartibartfast它出现在CouchDB 1.1中。旧的CouchApp功能是一种变通方法。我冒昧地更新了你的答案,告诉你这个肮脏的长篇大论:)谢谢你们,伙计们,这让我明白了很多!到目前为止,我能够使用require包含下划线,使用this.templates或require包含html模板,并使用u.template编译模板以使用列表函数显示我的内容。我的下一个目标是看看是否可以创建一个完整的动态html页面(css、js、imgs、字体等等),并通过couchdb列表函数通过一个GET请求使其可用。我完全可以接受3到4个请求,但这将是一个有趣的挑战。