CouchDB - CouchApp 的任何替代品?

CouchDB - any alternatives to CouchApp?

所以我最近一直在阅读有关 CouchDB 的文章,我真的很喜欢它。它看起来很简单,但又很灵活,我喜欢 RESTful 界面。但让我们面对现实吧——除非您正在构建 SAP,否则您会希望您的应用程序使用对 SEO 友好的 URL 提供静态 HTML,而不是持续的 HTTP 请求。我还没有在任何项目中实际使用过 CouchDB,但我很想在不久的将来探索它。

问题是:如何使用它来构建静态 HTML 网站,例如博客?我想将我所有的博客文章存储在 CouchDB 中,然后根据类别、标签和日期将它们作为 HTML 提供。如果我理解正确,我会在我的 设计文档 中定义一组 shows。因此,例如,在 设计文档 中,对于 'Work' 类别中的所有帖子,我还会为 show 添加一个单独的函数模板。但是,将 HTML 存储在 JSON 文件中的 JavaScript 函数中时,我遇到了一些问题!这听起来很难维护。我快速浏览了 CouchApp,它似乎解决了这个问题,但它似乎没有在积极开发中,因此我对其他可能的解决方案有疑问。

我希望能够像往常一样构建我的 HTML / CSS / JS,但尽可能利用 CouchDB 的优势,而无需任何外部后端。甚至更好 - 我很乐意将我的 数据库 实际定义为 JSON 文件,我的 map 函数作为常规 .js文件并为其他所有内容保持经典目录结构,例如:

db/data - 这包含 CouchDB

db/maps - 这包含我的地图函数

public/ - 这包含其他所有内容,包括其他 JS,CSS 和 HTML,如下所示:

public/css
public/js
public/categories.html
public/posts.html
public/index.html

等等

关于如何实现这一点有什么想法吗?或者甚至可能吗?

奖金问题: 有没有人能解释一下 reduce 函数是什么?它们是 SQL 等同于 sumcount 函数吗?我什么时候真正使用 reduce 函数?我什么时候需要写一个自定义的?

谢谢!

CouchDB 是专为 web 设计的数据库,它是 RESTful API 开箱即用的,这就是为什么 CouchApps 如此简单、开发速度快且不需要后端的原因,因为CouchDB 它实际上是您的后端。

我知道很难维护从 CouchDB 推送的 HTML,它也很昂贵,所以我构建 CouchApps 的方式是使用 Backbone 创建一个前端应用程序,管理我的所有路由(友好的 URL) ,使用模板(任何模板框架,我使用简单的 requirejs !text),并正常开发应用程序 HTML/CSS/JS,对 CouchDB 视图进行 Ajax 调用(使用列表转换数据,所以只是 return clean JSON),如果我想要一个特定的文档做同样的事情,只需使用 Shows,我就会再次获得 JSON 数据。

所以最后是作为 Web 应用程序与 RESTful API 对话并解释该数据以根据需要显示它。

然后您将该应用程序推送到 CouchDB(现在它是一个 couchapp),因此 CouchDB 实际上是将您的应用程序提供给最终用户,并将 API 提供给您的应用程序。

减少: 这是一个强大的算法,正如你所说的等同于 SQL sumcount,你在 CouchDB 中也减少了那些(_sum_count_stats). 我建议您阅读此 link 以了解 reduce 和 rereduce。

http://www.ramblingincode.com/building-a-couchdb-reduce-function/

基于 CouchApp tool is the Erlang based Erica tool. In fact the former is now deprecated 的 Python 的替代方法。

还有一个基于 nodejs 的工具,也称为 couchapp - 这是我选择的工具。 here。它稳定且久经沙场。

因为最终使用这个工具导出一个模块,即设计文档,您可以创建任何您喜欢的结构。

通过涉及 webpackcouchapp 的 npm 脚本进行一些智能设置,您可以使用箭头函数、常量和其他东西在 ES6 中编写视图,将它们转换为 ES5,这在 CouchDB 中是 greasemonky理解,并将它们部署到你选择的 DB 中,在一个 sinlge-liner npm-script 中(你显然可以变得更漂亮......)