Emberjs,服务器端与客户端,全部在?

时间:2012-12-26 22:36:11

标签: php javascript rest yii ember.js

我一直在研究Ember.js,它看起来真的很棒,但有一点让我担心,而且我无法理解它,如果我开始在已经运行的项目上使用它

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

让我澄清......

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

另外,我正在使用Yii Framework,其中包含一些JavaScript(支持Ajax)组件,如grids。如何在navigation上使用ember与所有这些进行交互,而无需重写已经在我的应用程序上工作的一堆东西?

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

3 个答案:

答案 0 :(得分:10)

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

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

然后,数据通过Ember路由和控制器等映射到Embers Model部件。

由于你用ember替换Yii的表示逻辑,你不应该使用像CGridView这样的Yii的UI类。 混合它们可能是可能的,但这似乎不是一个好主意。你必须在Ember自己经营。

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

答案 1 :(得分:7)

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

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

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

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

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

答案 2 :(得分:2)

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

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

无论如何我编写了整个app in my models,我的意思是数据控制等,实际功能在命令中。如果不支持浏览器或禁用javascript,则使用UrlManager和实际的控制器和操作,一切都会回归到锚点和页面加载的正常方式。这些控制器操作简单call the commands。 当然,帮助者将json输出转换为视图的可用数据。

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