关于前端对 ng , vue , react 的选择

2018-04-13 09:58:48 +08:00
 shenqi
最近收到一堆初中级的前端简历,无一例外,三大框架都说去了解或者使用过。

这中间,很大的比例都是使用过 vue 为主,其次是 ng,比较少就是 react。我个人倾向于 react 为主。

这么大的一个趋势到底是怎么造成的?
11112 次点击
所在节点    程序员
92 条回复
luoway
2018-04-13 13:12:50 +08:00
@meszyouh 确实,vue 写多了变懒了

@lambdaxs ES6 字符串模版了解下
React
2018-04-13 13:13:49 +08:00
我比较喜欢 React
tinytin
2018-04-13 13:14:03 +08:00
肯定是 react。
jlkm2010
2018-04-13 13:24:34 +08:00
@learnshare hi,国际上使用率 react > ng > vue,国内 react >= vue > ng
wangyufeng
2018-04-13 13:25:18 +08:00
哎。2018 我还用 jq,你们讨论的东西我都看不懂了。。。
grewer
2018-04-13 13:34:15 +08:00
@auroraccc 他说了是用箭头符号
overflowHidden
2018-04-13 13:43:21 +08:00
这种知乎上都被讨论烂了的话题怎么还在讨论。。。顺便吐槽下我不喜欢 jsx 的原因是很多半吊子写出来的 jsx 可读性简直是灾难
ahonn
2018-04-13 14:10:30 +08:00
@murmur #16 你对 React 可能有些误解,不可变对象并不是 React 设计的,React 本身思想也是函数式的那一套。换成 ClojureScript 之类的本身数据就是不可变的就没有这一回事了。

另外中 JSX 中不能用 if 跟 for,但是可以使用三目运算以及 map 好吧。所以“连 if 和 for 都要自己用语法糖实现”根本不需要好吧。至于为什么不能用 if 跟 for,因为 JSX 会转成方法调用,如果 JavaScript 能够这样写 const xxx = a if b else c 的话,JSX 中当然能够使用 if 了,然而这并没有必要。
murmur
2018-04-13 14:26:33 +08:00
@ahonn 有没有必要是使用者说了算 但是不做就是另外一回事了
vue 做了那么多人用说明还是有必要的
甚至 npm 上还有 if 的标签
顺便 vue 一样有 jsx 支持 既然 jsx 是 babel 搞出来的一种语法糖 那么有 render 方法的 vue 一样可以用
ben1024
2018-04-13 14:30:13 +08:00
推荐 React
ahonn
2018-04-13 14:44:57 +08:00
@murmur #49 能不能用 if 貌似跟 vue 多不多人用没有关系吧?假如 Vue 没有 v-if 或者 JSX 中使用 if,用三目你也能用得很开心的吧。

React 与 Vue 的实现不同,所以我不认为能不能用 if 或者 for 能说明谁优谁劣。况且 Vue 的 JSX 也不能用 for 吧?
至于说 React 是给 geek 用的,是否任何自己不喜欢或者不认同的技术都是可以说是给 geek 用的呢。Vue 当然也是很不错的,但是真的要分个高低是不合理的。对于 React 的评价我觉得你是不客观的。
barbery
2018-04-13 14:49:13 +08:00
作为一个后端,比较喜欢写 angular。。。也写过一段时间的 react native 和 weex,react native 完胜垃圾 weex
nikolai
2018-04-13 14:50:35 +08:00
入坑了 React,我觉得 JSX 挺好
doubleflower
2018-04-13 14:53:35 +08:00
用 react 做大点项目会用 redux 吧,react 本身是很纯粹很简单,但是和 redux 一搞真是狗屎啊,还不如 vue 了
murmur
2018-04-13 14:55:25 +08:00
@ahonn if 和 for 只是 vue 人性化的一小部分而已 vue 的 template 支持 for 就可以啊
即便如此 就因为 if 和 for 以及在 class 上使用了原先 html 的名字而不是非得叫 className
整个 vue 的模板写起来比纯 jsx 要整洁一大截
优劣不一定是性能 不一定是功能 上手难度 对开发者友好度一样可以作为标准之一
你既然整个 jsx 都是语法糖转义 为啥不顺手把 if 和 for 这么超常用的标签也做个支持呢 对吧 你已经把 class 改成 className 了
如果说 jsx 灵活就说明 jsx 更好 那是不是做的越少的框架就越好?

我们桌面端是 react 移动端 vue 两部分我写的东西都不少 我还真做不到更客观了
neoblackcap
2018-04-13 15:09:00 +08:00
@murmur jquery 其实很多概念已经要纳入浏览器实现了,因此它不是框架,它更胜框架才对。
ahonn
2018-04-13 15:13:22 +08:00
@murmur #55
纯 JSX 写起来整洁不整洁看人,我只能这样说。

以 Vue 中的 v-if 去对标 React JSX 中没有 if,我实在是看不出客观。
如果你理解 JSX 最后会变成什么的话,你就不会说 JSX 居然没有 if 跟 for 了。即使在 Vue 的 JSX 中也是没有 v-if 的,Vue 的 JSX 中 if 的用法与使用三目运算符完全没有区别吧?拿 Vue 的 template 跟 JSX 去比,这两者的实现完全是不同的,没有可比性,何来客观?

如果 Vue 在 JSX 中也支持 v-if,那就另说。

还有一点,React 中使用不可变对象是为了在 shouldComponentUpdate() 中方便高效的判断,也符合 React 本身函数式的思想。没有搞清楚就说 “为什么 react 要设计出不可变对象这个概念,很大一部分原因是他的 setState 有些弱智没法检测 Array 或者 Object 内部的改动”,何来客观?
murmur
2018-04-13 15:28:28 +08:00
@ahonn
( 1 )拿 Vue 的 template 跟 JSX 去比,这两者的实现完全是不同的,没有可比性,何来客观?
vue 在脱离 compiler 的情况下一样是把 template 直接解析成 render 函数里的嵌套调用实现的 为什么叫没有可比性
compiler 和 babel 不能比较么
更何况无论是 map 还是三目都会导致 html 和函数混写,如果你非要说这也叫整洁那我只能说你 6,三目这种没法对齐的东西还会坑死强迫症


( 2 )是不是要 update 这个还是需要用户自己优化,当然优化到极致是要每次 shouldComponentUpdate 都要考虑的,然而根据不可变对象的思路,你即便是改动了 object 里的一个属性,也会导致整个 object 变化,到最后还是要 vdom 进行 diff,而 vue 直接在属性上挂了 setter 可以直接检测是那个属性发生了变动,当然如果属性绑定比较奇葩最后也会落到 vdom diff 这一步,但是的却 setter 要比直接裸比 dom 更好一点点(现在已经没人拿 ie8 说事了吧)

极致下 react 的每个 shouldUpdate 进行人工比较是性能会做到极致,但是既然选了 mvvm 就放弃了一些性能吧,比起 jquery 年代用 template 拼接的传统的 batch insert 近乎完美的高效来说

你也可以说你们公司最低端的机器是 iphone7 不会考虑 batch insert 那点开销
zhwithsweet
2018-04-13 15:32:05 +08:00
vue 和 react 简化开发难度,提高开发效率,让大量的“小白”也能做出之前的前端开发要憋好久才能做出来的东西,一些不思上进的程序员害怕这些框架,害怕被时代进步干掉。前端开发现在处在一个高速发展的阶段,不进则退,老前端引以为傲的 css 兼容,js 兼容,被一个一个工具和框架用最佳实践搞定了。前端去年开始回归平淡,浪潮开始退了,公司要求高了,技术水平上去了,那些裸泳的也一一出现了。总结一句话,现在流行 3 大框架都是上品,只是有大量的不够水准的程序员而已,我们要做一手抓基础,一手抓前沿,keep hungry,学到老,从小白变成大白。
zhwithsweet
2018-04-13 15:36:39 +08:00
@learnshare angular 才是真正意义的框架,react 和 vue 本身只是 mvc 和 mvvm 类库而已,react,vue+生态才能赶上 angular。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/446444

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX