我先来一个,我选 Vue,原因如下:
1,Vue 有官方支持的<keep-alive>,React 没有或者是要自己去实现一遍,实现不好还容易踩坑,没有大量使用案例做经验支撑。而且 Vue 的 keepalive 组件还可以保持所有 DOM 各个细节的状态,React 必须把 state 都放在 store 里面,繁琐的要死
2,Vue 也有 JSX 支持,而且 slot 比 React 传入的 JSX props 不知道要直观到哪里去了,看起来很直接方便
3,Vue 管理依赖跟踪很方便,不会像 React 那样又要 setState 又要 this.props.onChange(),而且 Redux 搞一个状态跟踪要弄三处地方。如果我一个页面有二十来个状态,我就得搞二十来个 reducer。
4,React-Router V4 的 BUG 可以列一长清单,之前踩过好几次坑,比如 this.location.pathname 为空,跳转之后拿不到对应的 params,后来查询发现都是官方自己的 bug 问题。在 Issue 里,可以看到对 V4 的路由 BUG 描述那是十个手指头都列不完,每个 BUG 都可以说比较致命,甚至还有作者和提 Issue 的互骂。</keep-alive>
最主要是 keep-alive 让我一直离不开 Vue,这个特性是 Vue 官方支持且经过大量使用的。
我也曾查询 React 官方对这一特性是否愿意支持,很遗憾他们提供的建议都是让开发者自己造个轮子(比如设置为 display:none),不愿意官方统一开一个类似 React-Router 这样的项目,让使用用户更集中,BUG 更容易被发现,你一个造轮子的项目我一个造轮子的项目,这样的开源库谁敢用啊,无语。
所以 Vue 让我感觉就是一个词:务实。技术风格就像 Java 那样,每个 Api 都经过几十万用户的使用验证,不管对个人 solo 还是团队开发,都能稳步推进项目进度,就算是出问题了也能很快排查出来,不用花费无用功在性能啊 store 同步身上。
而 React 给我的感觉就是:非常 hack 和先进前卫。喜欢偏重概念和思想,虽然看起来很 good 的,但是对一个项目各方面的支持比不上 Vue,耗费大量时间精力做出来的东西,性价比并不高。做着 React 总是没有那种稳定的感觉,而且感觉自己像个码农一样,如果不是十几人起步的团队,我真的不会选择 React,太过于学术派了,不切和开发者体验,那真的是很不好用!!
所以问题来了,你们在做 CRUD 项目时,会用 React 还是 Vue?
1
allce231 2018-10-24 17:09:52 +08:00
vue
|
2
whypool 2018-10-24 17:12:23 +08:00
vue
|
3
Lax 2018-10-24 17:14:47 +08:00
听听大家怎么说,有个 electron 的项目不知道怎么选
|
4
tremblingblue 2018-10-24 17:15:50 +08:00
都不选,rails/django
|
5
jerrry 2018-10-24 17:17:17 +08:00
感觉又要战起来了
|
6
Wincer 2018-10-24 17:18:25 +08:00 via Android
前面都说 Vue,那我来说一个 react (#滑稽
|
7
garlics 2018-10-24 17:20:04 +08:00 via iPhone
选 PHP (#滑稽
|
8
riverxs 2018-10-24 17:27:35 +08:00
其实选楼主选 Vue 一个原因就够了,更熟悉 Vue,其他论据都是站不住脚的,我要选 React 我也能列出一大堆 Vue 和生态的缺点
|
9
90928yao 2018-10-24 17:28:55 +08:00
React-Router 现在没这么搞人的 bug 了吧
我个人喜欢 React |
10
xuhaoyangx 2018-10-24 17:29:46 +08:00
后端+手机移动端开发来说,我选择 jq
|
11
Keyes 2018-10-24 17:31:25 +08:00
@Lax 刚好我也在公司开了个 electron 坑,好在比较简单就是一个 OpenVPN 客户端,目前在用 react+antd
|
12
iloveyouso OP @riverxs 不管是性能还是效率还是周边,我感觉 Vue 更贴近开发者的角度,没有那么多理论的东西。
我指出来的这些应该不只是我个人的痛点,也是很多开发者的痛点,相比之下,我找不出为什么放着 vue 不用跑去用 react 的理由 |
13
asAnotherJack 2018-10-24 17:33:26 +08:00
我选韩信
|
14
qingzhan 2018-10-24 17:35:34 +08:00
引战嗦,就像八楼说的你只是更熟悉 vue 而已,选自己喜欢的就好
|
15
tyrealgray 2018-10-24 17:35:46 +08:00
当然是选 jquery 了啊。
还是个人非常喜欢 redux,自己已经开始用在非前端的项目中了。react 和 redux 结合起来用的那些繁琐其实可以看成是一种强制的规范,挺合理的,再差的新人改 reducer 里面的东西的时候,只要跑通了,基本上你也不担心会有什么特别大的问题。 |
16
wu67 2018-10-24 17:36:00 +08:00
好吧, 作为一只小渣渣, 我选择 vue.js, 毕竟我就只会这个
|
17
lijsh 2018-10-24 17:37:10 +08:00
一个滚动加载下一页的列表,当滚动到第 n 页的时候,点进某个详情再后退,大部分 SPA 就回到顶了,单这个需求来看,keep-alive 好用很多;不过因为是把列表缓存起来,item 太多的话,性能肯定有影响。
|
18
as80393313 2018-10-24 17:40:44 +08:00
Vue 大发好啊。全局的 bus,react,还没有想到这么实现。
|
19
LokiSharp 2018-10-24 17:45:18 +08:00 via iPhone
我选 Angular
|
20
hosea 2018-10-24 17:56:02 +08:00
小的用 Vue 大型的用 React
|
21
deepdark 2018-10-24 17:58:24 +08:00
angular
|
22
rockjike 2018-10-24 18:00:42 +08:00 via Android
react 会更加灵活
|
23
feverzsj 2018-10-24 18:02:27 +08:00
那你让后端干什么
|
24
blackboom 2018-10-24 18:05:55 +08:00
以前我会选 Vue 目前我选 Angular
|
25
xiaojie668329 2018-10-24 19:19:43 +08:00
我 vue 用得很多,算是比较熟悉了。但是新项目都打算用 react 了,vue 对 TS 实在不大好,特别是写测试的时候。当然也可能是我不熟。
|
26
jiyinyiyong 2018-10-24 19:53:07 +08:00
想当年 React 也曾是一个油头粉面的屠龙少年...
|
27
leconio 2018-10-24 19:57:19 +08:00 via Android
我选择 angular🤔
|
28
PythonAnswer 2018-10-24 20:03:30 +08:00 via iPhone
后端模板 哈哈
|
29
Bryan0Z 2018-10-24 20:06:25 +08:00 via Android
Vue,作为一个后端只会这个
|
30
jlkm2010 2018-10-24 20:46:36 +08:00
我选 angular
|
31
gouflv 2018-10-24 20:59:35 +08:00 via Android
react 组件直接基于 class,继承、抽象类都可以做。vue 是自己定义的一套对象结构声明,用 extend 和 mixin 实现。显然前者的 IDE 支持更好。
虽然 vue 也能用 class-component 实现 oop 的风格,但是毕竟不是官方,用起来总觉得别扭。还是得等 vue3.0 官方支持。 jsx 我是排斥很久的了,但是复杂度真到了那个程度,template 这种半封闭的结结构还真驾驭不了。 最后,vue 的好处当然是简单,足够应付轻量的场景。react 要做到简单就要自己踩很多坑,现在最顺手的是 reach-router 和 mobx。 |
32
gouflv 2018-10-24 21:05:32 +08:00 via Android
vue 的曲线平,但是上限低。楼主对 vue 有好感很正常,但是长期来看学习 react 或者 ng 才是有能力上升的空间。
|
33
Wolfx 2018-10-24 21:07:52 +08:00
vue
|
34
xiaqi 2018-10-24 21:55:02 +08:00 via Android
react
作为后端人员来说,似乎更喜欢 react 的风格🤔🤔🤔 |
35
dbpe 2018-10-24 21:58:31 +08:00
react 大法好。。
|
36
valueOne 2018-10-24 21:59:01 +08:00 via Android
vue 不解釋
|
37
riverxs 2018-10-24 22:20:27 +08:00 1
@iloveyouso 这个论题涉及一些价值观的东西,但还是需要理性评价一下你给出的论据
1. 对 react 设计理念有更好的理解后,就会知道<keep-alive>这种是应用组件的事,是 ant-design 类似的东西来提供的,React 必须把 state 放在 store 里面(我理解你要说的是用上 redux ),这个首先就是错的,只有必要的 state (大多数)才会放到 store,有些 state 放到 store 反而是错误的实践,为啥要这么做?做过有复杂状态的应用就会知道这是一条极大提高工程质量的建议 2. slot 比 JSX props 直观?这是极为主观的感受,就我而言用 JSX 比 template 要来的直观易用,表达能力更强 3. 状态的依赖管理 Vuex 和 Redux (或者说 Dva/Rematch )可以说是极为相似,但 Vuex 学习成本更低是事实 4. 性能, react fiber 了解一下,况且性能两者基本没差别,生态问题,React 更繁荣,选择更多,但差距不大,效率问题,这个和个人技术熟练度和业务熟悉度更高度相关(和具体技术真的强相关?) 5. 学术 Vs 务实,React 是核心概念极简(自由发挥空间大),Vue API 更多(意味使用方便),但也不会像是 Lisp Vs Java 那样,二者皆是工程务实的,做起项目来两者都是更多的关注数据流和组件化 6. 做着 React 总是没有那种稳定的感觉,其本质还是熟悉程度问题 7. 关于如何做技术选择,真的和技术本身优劣强相关?个人觉得和个人技术品味、经验、团队更相关些 |
38
kisnows 2018-10-24 22:30:25 +08:00
React,jsx 表达能力更强,上限更高。
|
39
rhyttr 2018-10-24 22:30:52 +08:00
Angular +1
|
40
chenxu 2018-10-24 22:47:55 +08:00 via Android
angular 路过
|
41
binaryify 2018-10-24 23:09:14 +08:00 via Android 1
选择 Vue
不喜欢 React 把问题都丢给开发者,连路由都没有官方的,React-router 讲真一点都不好用,为了组件化而组件化,问题一大堆,没有 keep-alive 也是个大问题,另外做页面过渡动画也没有 Vue 那么简单 |
42
binaryify 2018-10-24 23:10:05 +08:00 via Android 1
还有 React 子组件和父组件通信太麻烦
|
43
iloveyouso OP @riverxs
1,我并不主张 redux 把所有 state 都放到 store 里面,相反我更希望把组件紧紧关联的自我状态交由组件自己去管理。我所纠结地在于,一个组件在当前页面被用户操作之后,组件状态改变了,更换页面回来会发现 state 居然被清空了。 从用户角度来说,这是并不友好的。我原本用户操作的状态(比如一个 tab 标签选择某一个高亮),居然跳回页面就恢复原样了,这是反直觉的。如果需要实现 keep-alive,你就必须通过一些状态管理库来管理 store 来同步状态。这当然是最佳实践而且优雅至极的方式了,但是对于一些 CRUD 项目来说,十几个 Tab 标签页,五六个 table 并且带有过滤高亮用户点击高亮行功能,渲染起码 2 秒的三四个 echarts 实例,如果你要在页面跳转回来渲染的成本需要多高?就不说这个渲染的问题,就算你能把所有状态都保存下来,做好了各种数据同步的工作->重新获取 store 值->判断是否需要渲染->在组件 mount 的时候做一些初始化的工作,我绝对相信这个性能会大大打折扣,甚至比不上 jQuery 时代的页面,舍本逐末了。 keep-alive 有缓存页面太多导致卡顿的缺点,redux 也有不缓存页面节省空间的优点。但是我觉得不能认为因为 react 可以通过数据管理库来管理状态,从而忽略掉 keep-alive 这一方便开发者的特性。无论是小的 CRUD 项目,还是大型的 ERP 企业应用,keep-alive 这个特性绝对是值得关注的。就我所知的确有开源的 react-keeper,但这并不是官方组件,说不定哪天跟不上 react-router 的搭配,从开发者角度来看并不令人信任。 2,的确是我主观了,各有所好吧 3,都是参考 flux 思想的,Vuex 学习成本的确更低 4,性能两者都是没有明显差距的,能拉开开发效率和性能的恰恰路由、状态管理库这些周边生态。一个开发者如果以相同时间和精力去做一个项目,我相信 Vue 绝对是一把瑞士军刀,无论从:sync 这类语法糖,还是周边生态的完备和用户体验良好,更剩于 react。 5,React 自由发挥空间大,这意味着开发者需要花费时间去精心搭配工具链,如果不巧踩坑了(参考 RR4,这个发布多久还像测试版),又需要花费精力去修复。自由也是有代价的,也正因为这些代价难免让人感受到 React 不安全,从项目技术稳妥和效率上来看,Vue 无疑是更佳。 |
44
Lax 2018-10-25 09:24:20 +08:00
看楼上大佬的对比评价,感觉我这种非专职前端的新手用 vue 足够了
|
45
azh7138m 2018-10-25 09:33:51 +08:00 via Android
> 如果我一个页面有二十来个状态,我就得搞二十来个 reducer。
那还是用 vue 吧,哪个熟悉用哪个。 |
46
KuroNekoFan 2018-10-25 09:34:44 +08:00 via iPhone
vue 记忆成本比较高,各种奇奇怪怪的指令
|
47
wanghao2018 2018-10-25 09:59:58 +08:00
@KuroNekoFan vue 的指令还好吧,angular 的指令才是多。适当的指令挺方便的 react 面条式的 从上写到下。
|
48
sm1314 2018-10-25 10:21:38 +08:00
前几天写了个 crud 的后台管理系统,第一次接触前端,用的基于 reactjs 的 react-admin 框架,发现一个很奇怪的问题,测试的时候一切正常,编译部署之后首次加载正常,刷新后样式错乱。。。如果有下次的话我想我会去试下 vue
|
49
shuhao 2018-10-25 11:20:18 +08:00
react + antd 写后台管理系统简直不能更方便;喜欢 jsx 语法,比较灵活
|
50
binaryify 2018-10-25 11:36:37 +08:00
@KuroNekoFan 常用的就那几个指令,而且都是实用性的
|
52
lovelybear 2018-10-25 13:25:12 +08:00 via Android
原生 js
|
53
TangMonk 2018-10-25 15:28:50 +08:00
SonataAdmin 自动生成后台
|
54
wzhndd2 2018-10-25 16:38:07 +08:00
jquery 不好用吗?
|
55
Lax 2018-10-25 21:26:10 +08:00
* mw.js 还是 electron ?
* vue 还是 react ? * localStorage 还是 sqlite ? |
56
tuomasi 2019-01-17 13:44:24 +08:00
antd 虽然犯过错 但是 react 确实是屠龙刀 antd 还是值得一用的 >>>>>>>>偏右君 你还安好?
|