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

2022-08-30 18:35:44

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

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

让我澄清一下...

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

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

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


答案 1

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

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

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

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

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


答案 2

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

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

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

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

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