美文网首页码路拾遗程序员
Horizon介绍—无需编写后端代码,就能构建实时应用

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

作者: 时见疏星 | 来源:发表于2016-05-22 10:02 被阅读2193次

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

    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和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。

    $ 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 =>
        `<div class="todo" id="${todo.id}">
           <input type="checkbox" ${todo.done ? 'checked' : ''}>
           ${todo.text} -- ${todo.date}
         </div>`);
      todoApp.innerHTML = todoHTML.join('');
    });
    

    更多信息请参见 Getting Started guide

    社区

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/znporttx.html