EmberJS React vs Ember by Alex Matchneer at EmberNYC meetup

ericguo · 发布于 2015年10月31日 · 最后由 Cryrivers 回复于 2016年11月25日 · 3489 次阅读
Eda824
本帖已被设为精华帖!

React 11/1在上海会有一个workshop,看到Ember.js节点最近没啥人气,本着凑热闹的精神,准备去看一下React,预习了点暴走的React介绍视频,还有霹雳渔的,感觉React上手好容易的样子(天哪,这贴其实我是准备黑React的啊。。),心有所动,于是就又放狗搜了下这两对冤家的近况。

最终发现Alex MatchneerReact vs Ember的比较真心不错,终于又将Ember的道心稳住了。。

其实同时懂React和Ember的人很少,能够客观看的就更少了,还能顺便黑Rails的,就。。

React的问题:

Ember的问题:

  • 入门不易
  • 框架有点大
共收到 25 条回复
1楼 已删除
13071

我觉得 ember 现在最大的问题就是还不是 routable component, 所以现在写起 ember 来很是不爽。不知道 ember 什么时候才能把这个 feature 加上。我现在快从 ember 粉转黑了。最近用了一下 vue.js ,发现非常好用啊,写起来十分爽快, 推荐 vue.js。

Eda824

#2楼 @aidewoode 同意,你的这篇vue.js 使用感受写的不错。

16056

Ember的文档有些跟不上更新了,最佳实践捣鼓半天

13071

@nong 没用过这货,我觉得没有必要纠结选什么框架吧,选合适的就好,这也要看你项目的需求,还有你使用起来到底舒不舒服。反正得记住,是你在用框架,不是框架来玩你,如果你在用一个框架的时候有这种感觉了,就趁早换一个吧,前端框架何其多,何必为难自己呢?

17580

#8楼 @nightire

看了这个ppt. 帖子里有一点感觉很好,作者很认真的探究了react的优势,而且也会考虑将真正吸引人的地方引入到ember, https://docs.google.com/presentation/d/1afMLTCpRxhJpurQ97VBHCZkLbR1TEsRnd3yyxuSQ5YY/edit#slide=id.g380053cce_1495, 感觉这种态度很让人放心,更加有信心。

已倾向于ember.js,

1638

@nightire 很喜欢你这种认真回答的风格,每篇都可以单独成为一篇精华帖。

2443

我可以补充一份打鸡血的讨论吗? 虽然时间比较早 (2014.2), 但里面的讨论着实很精彩呀!

[Discussion] The future of Ghost's admin UI

然后是一段时间的实现 [Ember.js] admin UI rewrite

成功的案例, 挖一挖总是有的.

Eda824

#11楼 @wppurking 两个框架都有优秀的地方,react-native毕竟FB也是敢想敢干啊,都学吧。。

3

看到 @nightire 的回复后,就把这篇帖子投精华了。

14099

@lgn21st 现在成为精华贴有两条出路

  • 自己写精华贴
  • 发一个让@nightire回复的话题贴

新技能get 😄

React和Ember放在一起比较,很奇怪。React并不是一个完整的MVC框架,只是相当于view,而与React配合的Flux,自称只是个模式,也不是框架,用来和React配合。 我倒希望看到那种适用性推荐的帖子,比如说某种情况适合React,某种情况适合Ember,某种情况更适合Angular。 React比较吸引我的是它还有个React native。 非常希望@nightire能出一篇这样的科普贴。

15295

#5楼 @fate 确实,我上次也搞了好久,都要 😢

4390

不能拿Ember Data 和 Redux比吧,感觉现在用Redux写写轻量的应用还是不错的。谁来谈谈GraphQL和Relay啊?

96

ember 之前丑陋的模版是实作的时候的大坑,导致之前一直对ember不感冒。

react 最近两个月跟的比较紧,可以大致说一下我所知道的:

关于View engine的理解

的确大部分人的理解是react就是View engine,不过从使用的角度来说

  1. state props取代了model data存储的作用。
  2. high order component,包含了部分的controller到view的逻辑,例子有:Replay.Container,redux-react.Provider 剩下的就是flux补全的action部分,用来改变data。 所以理解为单纯的View engine,感觉上有点怪怪的。

子状态共享以及data store

子状态的共享在redux里面可以采用监听action来存储数据到自己的store里面,这个不是非常别扭。但是的确如果整个页面就是一个大的react component会方便很多。

在dataStore方面 redux的实现方式并不能和ember相比。store在redux里面是非常非常简单的,也没有和后端通信的接口,需要自己去拼接。 但是很显然,redux并不是react官方配合的数据层解决方案,react官方吸收了reducer到react component里面,作为state到render的中间数据处理层。而Relay则是facebook官方配合GraphQL的前端实现,整体上就是一个前端的超级DB。

通用方法的向下传递。

手工传递props到 sub sub sub component下面是比较累人的,react目前提供了context的方式传递,但是context本身不作为 component 是否 re-render 的依据,需要的话只能自己写。

关于RFC

react的确没有自己的RFC,不过标准性的东西有一些: react-future

关于jsx和模版

模板和component之间是区分还是合并,还是取决于团队分工的。如果设计师不懂js,需要前端插一道手,那jsx和模版就没有太多区别。而使用js原生语法,并且能直接采用js自己定义的内容,那么jsx就比模版更好一点。

但是如果需要设计师去动,且设计师懂得html不懂js,那当然还是模板好一点。

17580

@nightire

咨询下,使用ember为客户端app的话,ruby系的话,用来做api,哪个比较合适呢? 我目前只用过rails + grape, 就是不管view

另外实际上rails使用量依旧很大,考虑在rails的view上增加组件支持的话,也就是尽量去改善rails的view的写法,你觉着polymer, react, ember等这些哪个更好呢?

8658

#20楼 @seaify rails-api ActiveModel::Serializers 这套方法 不喜欢把前后端逻辑混在一起

1573

#19楼 @iwege

View Engine 的说法是 React 自己强调的,在历届 React Conf 里都反复的被强调。你提到的那几点:

  1. state props 取代不了 model data,因为它们传递/保存的是 value,而不是 model
  2. high order component 这里你举的例子都是 React 生态圈里的,但 React 本身就只是 View Engine 并没什么改变

所以没必要觉得怪怪的吧,当然内行相互谈话说起 React 一般都是隐式的指代 React 及其生态圈相关,所以我们当然知道 data store 该怎么搞,知道怎么把 flux/redux/relay 这一系列串到一起,只不过这么一来其实和 Angular/Ember 等等也是半斤八两的,并不总是人们以为的那么轻量

诚然,你可以说这样更灵活,选择更多,每一个独立的组件其质量都更有保障等等等等,然而无非就是另外一种选择罢了。就好像 JSX 到底好不好,最终只不过就是一种选择而已。

综上,尽管 Ember 没有 React/Angular 等等那么引人注目,但我这些年大家都用下来的感觉是,Ember 没有那么那么不好,其他的也没有那么那么好,现在对待它们的心态很平和,不管用哪个都能用到和用对它们的优势和特色,这才是最重要的吧。

1573

#20楼 @seaify 为了增加组件化的支持,Polymer 算是首选吧,虽然我觉得它还不足够成熟。Vue.js 什么的也不错啊,React 的生态圈越来越广越来越深了,如果只拿来当一个组件化工具觉得有点大材小用的感觉。Ember 不推荐,这是一个做 SPA 的框架,不适合用来局部增强,不过 Ember 也在轻量化改造,半年以后再看未必就是现在这个样子。

96

#22楼 @nightire 貌似我通篇没有说过react的灵活是其优点,也没说过其轻量级。另外我说的是model的data存储部分,不是说替代model。

灵活是它的一把双刃剑,不管是flux,redux还是relay使用起来都有点不顺畅或者不好驾驭的感觉,作为一个开发者,个人比较喜欢类似laravel和rails这样一揽子解决方案,而不是东拼西凑打补丁,为难选择性综合症患者的东西。

1573

#24楼 @iwege "你可以说 xxx”……这是一种行文手法而已,类似于英文里的 "You can say...",这里的“你”或者“You“都不是特指你,而是一种泛指。所以我说的并不是你……

关于 model,部分取代也不行,不是说你把数据接收到了然后可以在每一个组件的 local 使用,那么这个数据就是 model 或者部分是 model 了。仔细对比一下 Ember 接受数据也是靠 components 的 attrs,也是通过 yield 来做像 React 提供的 context 这样的事情,但这些都和 model 无关。Ember data 才是和 model 有关的部分,而这部分在 React 里是没有的,需要其他组件加入来支持,所以说 React 是 View Engine 或者 Components Layer 一点没错。

96

Alex Matchneer 真是不多见的天才,他的 ember-concurrency 好用得要死

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册