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 等同于 sum
和 count
函数吗?我什么时候真正使用 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 sum
和 count
,你在 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。它稳定且久经沙场。
因为最终使用这个工具导出一个模块,即设计文档,您可以创建任何您喜欢的结构。
通过涉及 webpack
和 couchapp
的 npm 脚本进行一些智能设置,您可以使用箭头函数、常量和其他东西在 ES6 中编写视图,将它们转换为 ES5,这在 CouchDB 中是 greasemonky理解,并将它们部署到你选择的 DB 中,在一个 sinlge-liner npm-script 中(你显然可以变得更漂亮......)
所以我最近一直在阅读有关 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 等同于 sum
和 count
函数吗?我什么时候真正使用 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 sum
和 count
,你在 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。它稳定且久经沙场。
因为最终使用这个工具导出一个模块,即设计文档,您可以创建任何您喜欢的结构。
通过涉及 webpack
和 couchapp
的 npm 脚本进行一些智能设置,您可以使用箭头函数、常量和其他东西在 ES6 中编写视图,将它们转换为 ES5,这在 CouchDB 中是 greasemonky理解,并将它们部署到你选择的 DB 中,在一个 sinlge-liner npm-script 中(你显然可以变得更漂亮......)