Horizon介绍—无需编写后端代码,就能构建实时应用

Horizon是由RethinkDB团队开发的一款开源实时后端框架,它旨在让开发者们快速搭建可拓展的实时Web应用。Horizon于2016年5月17日正式发布。

Horizon介绍—无需编写后端代码,就能构建实时应用_第1张图片
Horizon

Horizon包括以下特性:

  • Horizon服务端 ,由Node.js和RethinkDB构成,支持数据持久化,实时数据流,输入验证,用户认证和权限管理

  • Horizon客户端,开发者可以用于前端应用,将JSON数据存储到数据库中,执行请求,订阅在线更新等

  • **Horizon命令行 - hz
    **,它会生成项目模板,启动一个本地的Horizon开发服务器,帮助你部署应用到云端

  • GraphQL支持 ,Horizon的服务端会由一个GraphQL适配器来驱动你的React或Relay应用,这将使你在一开始就不必写后端代码,它不会在v1发布,但是会在项目启动后尽快发布。

由于Horizon基于RethinkDB,所以它的集群能力得到了保障,具体测评可以参见这篇文章battle-tested clustering。同时,和Meteor的Galaxy类似,Horizon也提供了托管服务Horizon Cloud,现在处于内测阶段,不出意料的话,功能会包括RethinkDB和前端应用的一系列的监控,价格肯定不会比小VPS低啦。

Horizon介绍—无需编写后端代码,就能构建实时应用_第2张图片

Horizon和Firebase的不同

  • Horizon开源,你可以将它部署到任何你想要的地方
  • Horizon使你能够搭建复杂的企业应用,因为你由一个完整功能的数据库
  • 借助于RethinkDB,Horizon能暴露出比起简单文档同步更有用的服务

Horizon和Meteor的不同

  • Horizon更加灵活,Horizon可以轻松集成任何前端框架,并且服务端也可以集成Node.js, Python, Ruby等或者Rails, Express, Koa等框架。而Meteor集成这些东西需要黑魔法。
  • Horizon只位于数据库和前端之间,Meteor是一个全栈的同构的体验。
  • 在架构上也不一样,Meteor基于LiveQuery和MongoDB's oplog,它不能高效地处理大量操作。但是RethinkDB的LiveQuery功能是在数据库中的,这使得我们由更丰富的流处理,扩展起来也更加方便,因为数据库层面就有所有必要信息。
Horizon介绍—无需编写后端代码,就能构建实时应用_第3张图片

惊鸿一瞥

首先,全局安装horizon。

$ npm install -g horizon

然后,你可以使用hz init创建模板项目。接着通过hz serve --dev启动Horizon服务器和RethinkDB实例。RethinkDB需要安装好并且要能在PATH目录访问。

$ hz init myapp
$ hz serve myapp --dev
# localhost:8181 has a demo page on it
# Horizon client connections can be made to ws://localhost:8181/horizon# The horizon client library is served from localhost:8181/horizon/horizon.js

Horizon的代码看上去如下:

// Connect to horizon
const horizon = Horizon();
const todoCollection = horizon('todo_items');

const todoApp = document.querySelector('#app')

// Function called when a user adds a todo item in the UI
todoCollection.watch().subscribe( todos => {
  const todoHTML = todos.map(todo =>
    `
${todo.text} -- ${todo.date}
`); todoApp.innerHTML = todoHTML.join(''); });

更多信息请参见 Getting Started guide。

社区

  • The Horizon.io website
  • The official Horizon forum
  • The Horizon project and issue tracker on GitHub
  • The #horizon channel in our RethinkDB Slack group
  • Follow us on Twitter: @horizonjs

你可能感兴趣的:(Horizon介绍—无需编写后端代码,就能构建实时应用)