繁体   English   中英

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

[英]Emberjs, server side vs client side, All in?

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

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

让我澄清一下......

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

此外,我正在使用Yii Framework ,它有一些JavaScript(支持Ajax)组件,如网格 如何在导航中使用ember与所有这些进行交互,而无需重写已经在我的应用程序上工作的一堆东西?

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

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

你移动到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/

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

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

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

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

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

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

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

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

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

暂无
暂无

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

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