23

我一直在研究Ember.js,它看起来真的很棒,但我担心的一件事是,我无法理解它,如果我开始在已经运行的项目中使用它。

我最终是否必须移动客户端的所有内容,并在某个时候使我的应用程序成为单页应用程序?

让我澄清一下……

到目前为止,使用 Ember 在客户端和服务器之间进行通信的最佳方式是 REST。这看起来很棒,但我不喜欢第一次加载所有模板。并将我的服务器中的所有逻辑移动到客户端(或者我错了?),因为看起来我的服务器端将成为一个无逻辑的 REST API。

另外,我正在使用Yii 框架,它具有一些 JavaScript(启用 Ajax)组件,例如grids。我怎样才能让 ember 在导航上与所有这些交互,而不必重写一堆已经在我的应用程序上工作的东西?

我在登录页面(或状态)上,然后登录后,我必须显示一个网格,这对 Yii 来说很容易,并且可以加载整个页面,但是如果我使用的是 Ember,我怎么能拥有我的像往常一样显示网格?我是否必须为网格预加载把手模板以及控制它的 JavaScript?

4

3 回答 3

10

不,您不应该将所有内容都移到客户端,尤其是可以绕过的身份验证和验证。

移到 Emberjs 的是 MVC 的 yii-s View 部分,控制器将输出即 JSON。

然后,该数据通过 Ember 路由和控制器等映射到 Embers 模型部分。

因为你用 ember 替换了 Yii 的表示逻辑,所以你不应该使用 Yii 的 UI 类,比如 CGridView。混合它们可能是可能的,但这似乎不是一个好主意。你必须在 Ember 中运行你自己的。

http://www.yiiframework.com/wiki/409/ember-js-with-yii-rest-backend-demo-application/

于 2013-01-07T17:25:34.483 回答
7

只是在这里添加一个 Yii 视角。网格视图/列表的许多“魔力”发生在数据提供者中(用于复杂的搜索、排序和过滤),并通过模型上的已解析字段格式化数据。

因此,您可以在服务器端使用相同的概念,并从您自己的小部件中输出最终的 JSON、分页和所有内容;甚至在所有数据/配置处理后覆盖网格视图并输出 json 而不是视图。

一旦你得到 JSON 而不是 HTML,就很容易复制网格的前端,那里真的没有太多功能。

这可能并不理想,但这意味着您不必将分页、搜索和过滤的所有逻辑移动到客户端。

TL;博士;
覆盖您已经为其构建功能的 Yii 小部件,并使用它们输出 JSON 而不是 HTML。

于 2013-01-04T15:06:46.950 回答
2

根据我的经验,您可以使用服务器端 JS 访问现有的控制器和操作(通过 cli 或 http)。我对与 node.js 集成的现有应用程序做了同样的事情。

这样做的一个好处是,您可以保留现有代码作为不完全支持您的新实现的浏览器或首先不擅长使用 javascript 的搜索机器人的后备代码。

无论如何,我在我的模型中编写了整个应用程序,我的意思是数据控制等,实际功能在命令中。如果浏览器不支持或禁用 javascript,则一切都将使用 UrlManager 和实际的控制器和操作返回到正常的锚点和页面加载方式。那些控制器一个动作简单地调用命令。当然,使用助手将 json 输出转换为视图的可用数据。

无论如何,页面加载都是默认的 php 和控制器视图,因为它已经存在。

于 2013-01-08T09:51:07.713 回答