Emberjs,服务器端vs客户端,都在



我一直在研究Ember.js,它看起来真的很棒,但有一件事让我担心,而且我不能在它周围得到我的想法,如果我开始在一个已经运行的项目上使用它。

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

让我澄清一下…

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

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

我在登录页面(或状态),然后在登录后,我必须显示一个网格,这是很容易与Yii,和一个完整的页面加载,但如果我使用Ember,我怎么能有我的网格显示,因为它通常会?我是否需要为网格预加载车把模板,以及控制它的JavaScript ?

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

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

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

既然你用ember代替了Yii的表示逻辑,你就不应该使用Yii的UI类,比如CGridView。混合它们可能是可能的,但这似乎不是个好主意。你得在恩伯经营你自己的公司。

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

在这里添加一个Yii透视图。网格视图/列表的许多"魔力"发生在数据提供程序中(用于复杂的搜索、排序和过滤),并通过在模型上使用解析字段对数据进行格式化。

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

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

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

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

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

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

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

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

相关内容

最新更新