2012-04-06 47 views
4

我一直在寻找无处不在试图找出这个问题。我试图从couchdb show和list函数生成html页面。我想利用underscore.js的模板解决方案。我遇到的部分是如何在我的show和list函数中包含html模板。如何在CouchDB中使用html模板

我在哪里存放它们?作为附件?然后我如何在展示和列表功能中引用它们。我假设!json和!代码宏没有被使用,我不知道如何使用来自普通js的require()来完成它。

任何帮助将摇滚!

谢谢!

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

回答

4

我不熟悉Kanso,但CouchDB的1.1之前,CouchDB中查看/显示等功能,可以不包括任何东西。 (CouchApp工具有自己的!include解决方法来解决这个问题。)这些都不再需要了。 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()); 
     } 
    } 
}; 

Sharing code between views

要渲染的模板服务器端,你需要将它们编码为字符串,并要求他们像你需要其他的JavaScript库。 (对于浏览器端呈现,提取附件通过Ajax的工作原理。)

+0

谢谢!将我的模板编码为字符串正是我想要避免的。接下来我将寻找某种预处理器。 – Costa 2012-04-06 15:23:29

+0

查看/显示**可以**包括任何东西,使用CommonJS。在你的例子中,Kanso(虽然优秀)是无关紧要的。 map函数中的require()发生在CouchDB中。 – JasonSmith 2012-04-07 05:04:07

+0

@JasonSmith这很有趣。这是最近的变化吗?为什么CoichApp包含宏? – Slartibartfast 2012-04-07 06:15:41

5

CouchDB的附件,根据定义,not accessible in show and list functions

显示和列表功能,支持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 
+0

感谢您的快速回复!这很好,我已经得到了这一点,但有没有办法包括HTML模板(或CSS的事)?从长远来看,将我的模板创建为JavaScript字符串确实很难维护。 – Costa 2012-04-06 15:22:31

+0

是的,在map函数中,'this'是对设计文档的引用。如果在设计文档中有''hello':“Hello,{{user}}”',那么可以在map函数中引用'this.hello'并获取字符串'“Hello,{{user}} “'。 – JasonSmith 2012-04-07 05:15:16

+0

非常感谢杰森!这很棒!嗨,我已经学习了很多关于如何使用CouchDB的知识,有什么方法可以帮忙吗?教别人?为社区添加一个couchapp? etc ... – Costa 2012-04-07 07:07:15

相关问题