【问题标题】:Using CouchDB to serve HTML使用 CouchDB 提供 HTML
【发布时间】:2009-12-15 23:27:14
【问题描述】:

我正在尝试将 CouchDB 与 HTML/独立 REST 架构一起使用。也就是说,除了 CouchDB 和 ajax 风格的 javascript 调用 CouchDB 之外,没有其他应用服务器。

看起来跨脚本是个问题。我之前使用过 Cloudkit/Tokyo Cabinet,似乎需要的回调函数在 URL 中搞砸了。

现在我正在尝试 CouchDB 并遇到同样的问题。

这是我的问题:

1) 这些问题是因为像 CouchDB 或 CloudKit 这样的 REST/JSON 存储运行在与我的网页不同的端口上吗?它们都在本地运行并从“localhost”调用。

2) 我应该让 CouchDB 托管我的页面并提供 HTML 吗?

3) 我该怎么做?文档似乎不太清楚...

谢谢, 亚历克斯

【问题讨论】:

    标签: json rest couchdb


    【解决方案1】:

    有一个简单的答案:将静态 HTML 存储为 CouchDB 文档的附件。这样您就可以直接从 CouchDB 提供 HTML。

    有一个命令行工具可以帮助您执行此操作,称为 CouchApp

    Mikeal linked to 这本书还有一章(管理设计文档)介绍如何使用 CouchApp 来做到这一点。

    【讨论】:

      【解决方案2】:

      3) 您可以使用CouchDB shows 生成 HTML(或任何内容类型)

      【讨论】:

        【解决方案3】:

        让 CouchDB 服务/生成您的 HTML 有巨大的优势。

        一方面,页面(它们是 HTTP 资源)与数据或数据查询相关联,并且 CouchDB 知道当页面发生更改时何时更新 etag。这意味着,如果您将 nginx 放在 CouchDB 前面并说“缓存内容”,您将获得通常需要自己构建的所有免费缓存。

        我会在 CouchDB 前面推动 nginx > apache,因为 Apache 在处理并发连接方面并不是那么出色,而 nginx + erlang (CouchDB) 则非常擅长。

        此外,您可以用 JavaScript 编写这些视图,这些视图在 CouchDB 书籍 http://books.couchdb.org/relax/ 中有很好的记录,或者使用我的视图服务器 http://github.com/mikeal/couchdb-pythonviews 在 Python 中编写,这还没有真正记录在案,但我会谈到它很快:)

        我希望其他语言的视图服务器也开始实现视图服务器协议中的新功能,以便任何人都可以在 CouchDB 中编写独立的应用程序。

        【讨论】:

        【解决方案4】:

        我认为一种方法是通过 Apache 中的 mod_proxy。它将请求从 Apache 转发到 Couchdb,因此可以解决跨脚本问题。

        # Configuration file for proxy
        ProxyVia ON
        
        ProxyPass /couchdb http://<<couchdb host>>:5984/sampleDB
        ProxyPassReverse /couchdb http://<<couchdb host>>:5984/sampleDB
        

        【讨论】:

        • 啊哈-谢谢。这是帮助跨脚本编写的好主意。您(或其他任何人)是否知道如何让 CouchDB 提供 HTML 服务。它应该能够做到这一点,我已经看到“在设计文档中”提到这样做,但我无法确切地看到如何......
        • 你可以看看开放的“couchapps”。例如。 github.com/jchris/toast 非常小且易于理解。设置 couchapp 并执行couchapp push .。本质上,您只需将 HTML 作为设计文档的附件上传,然后点击127.0.0.1:5984/toast/_design/toast/index.html
        【解决方案5】:

        我不禁认为您需要在表示层 (HTML) 和模型 (CouchDB) 之间建立一些层。

        这样您就可以调解请求,提供额外的设施和功能。目前,您似乎正在将持久对象直接呈现到表示层,并且您将无法更改或扩展系统的行为。

        采用model-view-controller 架构将使您的模型与表示层隔离,并为您提供一些前进的灵活性。

        (我承认我无法就您的跨站点脚本问题提供建议)

        【讨论】:

        • Brian- 这实际上是这个架构的重点。我认为使用 Ajax,控制器层开始移动客户端。控制器(以及更新视图的工作)在页面上的 javascript 中完成。所以它对模型进行 REST/JSON 调用。完全完成后,模型方面确实需要一个授权/安全部分,但我现在正在制作原型。有人知道 CouchDB pience 中的 HTML 吗?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-05-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-10
        • 2011-08-01
        • 1970-01-01
        相关资源
        最近更新 更多