繁体   English   中英

ember.js和服务器

[英]ember.js and the server

我正在看Ember.js,并一直在阅读文档,试图了解如何使用它。 我得到它(相当不错),除了一件事。 根据我在MVC模式中的思考方式,Model是应用程序中数据的存储库。 我可以看到它对Ember.js中的客户端数据有何用处。 我没有得到的是如何将数据绑定回服务器,以便在客户端数据发生变化时,更改将在服务器中更新。 反之亦然。 我一直在我的Web应用程序中执行此操作,使Ajax / JSON调用来回到服务器,我只是没有得到如何使用Ember.js。

在GitHub上挖掘一下emberjs,我发现了这个: https//github.com/emberjs/data

Ember Data是一个库,用于从持久层(例如JSON API)加载模型,更新这些模型,然后保存更改。 它提供了许多您在服务器端ORM(如ActiveRecord)中找到的工具,但它是专为浏览器中JavaScript的独特环境而设计的。

我还建议阅读Ember.js Live Collections 你想要的是拥有一组知道如何与服务器端同步的模型,可能的示例代码是:

// our model
App.Person = Ember.Object.extend();

App.people = Ember.ArrayController.create({
  content: [],
  save: function () {
    // assuming you are using jQuery, but could be other AJAX/DOM framework
    $.post({
      url: "/people",
      data: JSON.stringify( this.toArray() ),
      success: function ( data ) {
        // your data should already be rendered with latest changes
        // however, you might want to change status from something to "saved" etc.
      }
    });
  }
});

然后在需要的时候调用App.people.save()

另外一定要查看这篇文章, 关于使用Ember.js的建议和说明,更深入地了解与Ember的服务器 - 客户端通信,还提到了emberjs / data

注意 :Emberjs数据库应该谨慎使用,因为它不是生产就绪的。

在Ember.js中, Ember对象中包含的“模型”将包含底层服务器端数据库的进一步抽象,如果您使用的话。 然后,应用程序的控制器部分应该具有允许您检索和发送在需要时调用的数据的方法,以便更新模型(使用Ajax)。 这很好,因为你有一个模型可以在客户端快速响应用户提供应用程序的任何输入(按键,鼠标移动等),并有选择地选择何时对服务器端数据库进行相对昂贵的查询。 这样,应用程序的某些性能不再受到外部服务器数据请求延迟的阻碍,这在某些情况下可以允许您创建响应速度接近本机应用程序的应用程序。

我想像这样成对地描绘Ember.js

  • 视图和模板是相关的(显然),调整Views-Class来控制模板(比如classNames)
  • 路由器和路由的工作方式有点像MVC中的控制器。 他们负责将请求路由到正确的端点
  • 控制器和模型以模型为中心,其中一个(模型)描述了您将在应用程序中处理的数据,而控制器的行为就像一种代理(或装饰器,如果这更像是你的小巷)。 例如,模板将连接到控制器

基本上,这意味着您使用模型加载控制器(单个或数组),现在可以轻松地在控制器中模拟在该模型上工作的过程(即,在其核心/数据中不接触模型的内容)。 对于示例博客应用程序,您将在模型中描述Post并为控制器添加类似的内容

App.PostController = Ember.ObjectController.extend({
  content: null,

  // initial value
  isExpanded: false,

  expand: function() {
    this.set('isExpanded', true)
  },

  contract: function() {
    this.set('isExpanded', false)
  }
});

现在,您可以通过控制器在前端思维方面与模型表示进行交互。 是否扩展帖子不会更改模型,只会更改数据。

在从服务器重新加载数据方面,我有两个答案

  1. 我发现这篇文章对理解连接很有帮助(简单的轮询,虽然很简单)
  2. 如果您正在使用Rails,那么即将推出的Rails 4 Live会很幸运,请看这篇文章和演示文章,了解多汁的部分

我意识到这是一个问题有点陈旧,但它是在ember.js评价最高的页面上,所以我想我会添加一些。

我最近一直在使用ember-model来处理RESTful数据绑定。 它有更少的花里胡哨,但根据我的需要它是相当不错的。 基本上,它只是扩展了模型功能,以便与通过标准REST接口推送JSON对象的服务器相当好地集成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM