自己有一个平台项目,做了几个月的 Rails,基本实现了架子,但是后续想要增加交互功能,越写 jquery 越头大,没有章法可言,因此想尝试换用 EmberJS。不过 EmberJS 是一个 MVC 框架,里面也有自己的 model,那么它如何和后端 Rails 保持一致呢?不会要手动修改吧?刚刚接触 EmberJS,看了一些资料,但是还未掌握精髓。
前端的 model 一般是 api model,不一定要和后端一致 如果 api 返回的格式不符合标准,还可以用 serializer 序列化成标准的 model http://emberigniter.com/fit-any-backend-into-ember-custom-adapters-serializers/
#1 楼 @chaucerling 谢谢提供上面那个及时更新的材料,非常需要~
#2 楼 @dongli1985 我想请你回顾自己说的这句话:
不过 EmberJS 是一个 MVC 框架,里面也有自己的 model,那么它如何和后端 Rails 保持一致呢?不会要手动修改吧?
然后重新问问自己:为什么前端的 Model 要和后端保持一致(同步)呢?
之后推荐你看看这个视频:https://www.youtube.com/watch?v=gk-xyLM7R4g
Yehuda 用 Ember 仿做 Github(部分)的视频,在这段视频里 Yehuda 没有使用 Ember Data,也就不存在你原本顾虑的 Model 问题。然而从另外一个角度来讲,前端开发往往是对后端的 MVC 一无所知的(就好像你不是 Github 的员工,你怎么知道它后端的 MVC 细节如何?),我们能知道的最靠谱的东西就是 API 了。
所以你顾虑的问题是和具体的技术/框架(比如 Ember)无关的,它的终极命题是:客户端在不知道服务端具体实现的情况下,如何保持和服务端的业务模型/逻辑一致(同步)?
简单的答案是:客户端是不是 MVC 不重要,不是 MVC 也可以有 Data Model Layer,只不过它 mapping 的对象是 API 而不是服务端的 MVC 层。所以设计好你的 API,底层的实现你随意变不要紧,API 保持一致客户端就很 OK。
#3 楼 @nightire 谢谢你的建议!目前我只是在初步尝试,由于我们只有两个人在开发,所以想尽可能简化下开发流程。看来只能边设计 API 返回的 JSON,边设置 Ember 中的 model。
#4 楼 @dongli1985 基本如此。不过这个过程其实也可以反过来,在很多时候往往客户端开发者要比服务端开发者更理解 API 应该是什么样子的(两边的理解高度一致那最好,不过这是理想化的结果),所以你完全可以先从客户端开始,无非就是借助假数据(就好像后端测试用的 fixtures)先实现客户端的 UI 功能,然后以此为导向实现真正的 API,最后两边一对接就好了。这是一种可行的办法,而且挺适合两人组合干活的。
#5 楼 @nightire 我的小伙伴目前还主抓 Rails,我先来打打酱油~ 争取走通 Ember 这条路。再次感谢!