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

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

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

这么大的一个趋势到底是怎么造成的?
11093 次点击
所在节点    程序员
92 条回复
luoway
2018-04-13 11:10:04 +08:00
Vue 因为好上手,前后端开发人员都容易使用。
React 光是 JSX 就对 JS 能力要求不低,不会 ES6 的话写起来就很恶心了。

而大多数后端还在用 jQuery 写些简单、通过复制粘贴来实现重复的逻辑时,框架选型阶段无疑 Vue 会胜出。
这么个大趋势是无数一个人当多个人用的创业公司、前赴后继的从业人员造成的。
szdubinbin
2018-04-13 11:22:50 +08:00
这种问题简直日经,知乎能给你从计算机起源撕到实现共产主义,那么撕完了优越感有了,你的需求呢 /滑稽
Pastsong
2018-04-13 11:31:46 +08:00
用过 react native 之后越来越觉得 react 是个很牛逼的 UI 库(做技术没有信仰和咸鱼有什么区别
xieguanglei
2018-04-13 11:35:19 +08:00
React 大法好,理念先进,又足够简单,扩展性很强。用上了 React 简直是海阔凭鱼跃,天高任鸟飞,JS 全在你手中的感觉。

Vue 因为临时参与其他团队的一些其项目也用过,上手还是挺快的,但是感觉约定太多,尤其是 template 里面的很多语法,有点欣赏不来。
xiaxiaokang
2018-04-13 11:36:59 +08:00
vue 和 ng 几乎是一个体系(语法),react 主要我觉得和他们都不太两个区别大有点孤立的感觉
还有 vue 上手非常快属于“渐进式”库,非常适合短期上线项目。ng 属于完整框架,而且 ng 默认采用 ts 类型开发,大项目优势就非常明细! react 我倒是没怎么接触,希望有高手向我解释下优势
xiaxiaokang
2018-04-13 11:40:42 +08:00
@xieguanglei template 语法你看 ng 就可以了,很多雷同
murmur
2018-04-13 11:43:27 +08:00
@xiaxiaokang react 的优势就是 react native
其余的还真不叫优势
如果所谓的语法糖也是优势的话
will0404
2018-04-13 12:01:57 +08:00
看了楼上的回复我想说,技术可以有偏向性但不应该贬低任何一个技术,然而几个框架甚至都不应该分门别类,同属 js 开发。
看到有人说出 Vue 中组件定义时箭头函数 this 指向乱套,我就知道,这人 js 基础都没过关,this 指向和你用什么框架有什么关系吗。
下面说我的理解。
React 比较学院派,引入了函数式编程的概念,纯函数,不可变对象,高阶函数等等,函数式的理论其实在计算机领域存在很长时间了,有一点非主流但其实是非常有用的概念。前端大多人都是半路出家,认为这些偏门或太 geek 本质是自己理论基础不扎实,因为 js 本身就师从 FP 系,没法面向对象(别扭的原型链不算),如果你希望自己是一名合格的工程师而你觉得 React 很难,那你应该多看书,提高自己,恕我直言,因为你暂时还不算合格的工程师。
Vue 让传统前端觉得简单是因为它很好的保留了前端三大件 html,css,js 的书写分离(即使是在单文件组件中),传统前端过渡到 Vue 非常自然和容易,这是 Vue 的优势,加上文档非常友好,开发者是中国人等因素,能火起来绝不是偶然。Vue 的技术特点是指令的运用(师从 ng1 ),双向绑定等(本质是对象属性的读写操作劫持和 dom 事件监听),在中后台开发中用双向绑定非常舒服,如果你用 react 和 vue 分别写过 form 组件你就会明白,所以我也很喜欢 Vue。而 Vue 的其它思想如组件化,状态管理,单向数据流等,和 React 大同小异,可以这么说,目前很多 React 和 Vue 的大型项目脱离了 view 层就是一模一样的东西。
Angular 就非常专业和刻板,灵活性不高,然而你需要的东西它都有,我接触到的后端开发都更喜欢 Angular,他们大多是写 Java 的,对 Typescript 带来的类型系统非常喜欢,用他们的原话说,“没有类型的动态语言写起来就像摸石头过河”,我写了一年 TS 后对此也表示非常理解,利用友好的 Lint 和编译期检查可以规避相当多的低级 Bug。这里可以看出 Angular 是志在打造包含了完整生态的一个解决方案,这一点和 React 和 Vue 利用社区力量扩展周边很不同,在 Angular 里,不管你需要什么,都能找到官方的支持。语法层面呢,无非是看你对 ts 和模块化编程的熟悉程度。至于 rxjs,如果你明白它解决了什么问题你就不会觉得它是个问题,说白了,就是异步的数据流处理,以前你用 Promise,用 async await,给你包装了一层你就不会了吗,高大上的“响应试编程”是什么?不就是你每天都在写的发布订阅模式,node.onclick = xxx。

回过头来说,前端工程师啊,还是应该先把语言基础学扎实,一切框架之争既浮躁又没意义:)
Pastsong
2018-04-13 12:14:48 +08:00
@Pastsong react 在写 react native 优势不止是能写,而是它让用 react 写一个和 dom 完全不相关的界面竟然是如此 make sense 的事情
ChefIsAwesome
2018-04-13 12:18:18 +08:00
vue 跟 angular 就不该拿来跟 react 比。这俩应该跟 polymer,knockout 等等各种存在了很久的带模板功能的 mvvm 库比。
oswuhan
2018-04-13 12:31:18 +08:00
本人同倾向于 react。

vue 的技术特性、发展方向比较迎合(非前端、伪前端)开发者以及前端初学者的口味。

就如同 jquery 的设计理念比较类似,API 很全很强大,上手无须复杂的理论基础。

jquery 发展到现在已经完全变了味,所谓的 jq 开发基本上都是围绕“搜索并集成 jq 插件”来进行。

很显然,vue 也走上了 jq 的老路。
murmur
2018-04-13 12:34:34 +08:00
@oswuhan jquery 这框架地位不容置疑
来看我分析一波
jquery 中文翻译成杰阔睿
杰:杰出,代表 jquery 在前端历史的地位,jquery 即便死去也将永远的刻在里程碑上
阔:宽阔,取海纳百川之意,这里主要指 jquery 丰富的插件体系以及 jquery 和各主流框架的包容性
睿:睿智,jquery 从 api 设计到命名无不体验着一种睿智,相比于某 mvvm 框架 api 长到一行写不下而言

所以 jquery 咋了么 jquery 不是框架胜似框架 是有他的道理的
gladuo
2018-04-13 12:39:47 +08:00
@murmur 服气 hhh
lolizeppelin
2018-04-13 12:50:26 +08:00
作为一个写 Python 后端的运维 以前从来不写 js css
前段时间被迫写后台 UI
花一天时间粗看 w3c 然后就直接撸 react 的表示 jsx 很好 不用折腾 html 和 css 真是好

vue 容易过度的优势对非前端开发来说反而是绊脚石

我选 react 的最大原因就是 react 不用写 css 和 html
还有一个重要原因是 Google 的那个 me 什么 UI 的框架有 react 版
0 js html 基础的情况下 练习一个礼拜不到 上模板网买个 react 加 mxxx ui 的模板网就能直接出活了
murmur
2018-04-13 12:52:56 +08:00
@lolizeppelin 不写 css 怕不是在梦里
哪里说你选 react 就不需要写 css 和 html 了
只能说 jsx 方式写 html 更恶心人了
lolizeppelin
2018-04-13 13:00:02 +08:00
@murmur
你觉得恶心是因为你习惯了原生 html
实际上 HTML 也不就是类似 xml 的东西而已
jsx 的写法我就觉得没问题


至于 css 起码不用写 css 文件。。虽然还是要看文档学样式
meszyouh
2018-04-13 13:07:20 +08:00
我的个人感受,Vue 写多了 js 都写不好了,还是喜欢 React。
gesneriana
2018-04-13 13:09:08 +08:00
vue 模版语法没有 react 纯 js 写起来那么灵活。 刚上手感觉 template 写起来很爽,逻辑复杂了真的就是绊脚石了。
不说哪个好哪个不好,能脱颖而出的都是好框架,看个人和团队习惯。
lambdaxs
2018-04-13 13:09:45 +08:00
@murmur 一开始也是无法接受 jsx,喜欢纯粹的 html,但是写多了发现 js 融合 html 也有一定的道理,能让表达更加灵活。
auroraccc
2018-04-13 13:11:35 +08:00
@grewer react 也可以写成 vue 这种啊

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

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

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

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

© 2021 V2EX