为什么我们放弃了 Vue?Vue 和 React 深度对比
发布于 4 年前 作者 Q-Qplus1s 16580 次浏览 最后一次编辑是 3 年前 来自 分享

我使用 Vue 和 React 已经很长一段时间了,两个框架上实践代码量都在 10 万行以上。不得不说两者都是很 nice 的,帮助开发者减少很多工作量,这类框架是现代化前端开发必备的。然而 Vue 和 React 两者之间的选择并不像选择苹果或香蕉一样简单,两者在工程实践上的差距让我们逐渐放弃了 Vue。本文以不一样的角度对两者进行深度对比。

为什么我们放弃了 Vue?Vue 和 React 深度对比

31 回复

typescript 问题和模板中变量问题三者都缺的是一个好用的插件,显然,react和angular做的更好一些, 迷惑的this约定好定义位置不好用? 每个文件上来一大堆import来export去好看?最后你都引懵了 vue最难用的其实是项目大了后,watch,computed 加上你的this. 对数据的改变太难追踪了,在这一点上,react都需要setState,而angular直接没给你提供watcher computed…

赞楼主的总结,可以顺带在了解下concent吖,一个自带依赖收集渐进式&高性能的react开发框架 https://github.com/concentjs/concent

一定会让你喜欢的,附带一篇小文,在react里使用composition api https://juejin.im/post/6861527942070009869

写的很棒。Vue 的数据变化不可追踪,往往不知道赋值之后,会发生什么魔法,甚至生效没有,这时候往往用上万能的 $nextTick 或 setTimeout

写法非常的 hack,性能非常魔幻

框架的寿命比不过语言,Vue 的模版 {{ expression }} 也不是 javascript 表达式,Vue 3.0 也只是续命一时而已

如果近几年再出一款爆款的框架,也只是革 Vue 的命,React 紧随语言和函数式,没有魔法,啥事没有

其实Web Components也挺方便的,还更加navtive,内部系统可以试试。 就比如我之前开发的before-server就是基于Web Components做的,目前我们公司内部普遍叫好(虽然叫好主要是功能好用,但是速度上明显是得益于Web Components)。同时用rollup替换了webpack,编译速度直接起飞,替换webpack到rollup的修改

@zy445566 貌似 rollup 主要用于模块(package)打包,而 webpack 用于项目打包。你那儿 rollup 也当作项目打包用途了么?

@waitingsong 对,就这个before-server,改webpack 到rollup了,快是快了很多。但是我理想情况是还是利用type=module的特性,在import()这个异步方法能对依赖进行按需引用,这样无论多大的项目都能实现毫秒级别编译(甚至无需热更到内存),但事实还是有点差距,目前正在研究这样方案(我看了vite和snowpack都不是特别适合,不过可能因为我是业余前端的关系吧)。 不过目前我自己构建的一套Web Components工具库挺好用的(包括路由,动态渲染等等,用起来的舒适度不输于现有框架),但是毕竟不是专业前端无法在公司落地主要项目,所以感觉意义不是很大,但是我觉得很多专业前端可以构建一套Web Components工具库,这个既轻量如果能在公司落地主要项目的话,也算是微创新了。

@axetroy Svelte 其实不错,只是生态圈不怎么样。如果 Svelte 生态圈跟上来,我就打算换这个了。不过对 React 始终无感,JSX 才是看着太 Hacky,满满一股 PHP 是最好的语言的味道

@waitingsong Rollup 打包的包,大小要比 Webpack 小,速度更快。只不过没有 Webpack 生态圈好

@andyhu 后面一句说错了吧,vue 才是一股子 php 的味道,而且 vue 也是沾了 php 框架 Laravel 的光才起来的。

我个人感觉 svelte 的入门体验略优于 vue,比 react 爽太多了。 不过 svelte 用于开发 Web Components 组件库比较爽,编译的结果可以跨框架使用,而且比目前 wc 框架编译出的代码都小,毕竟 svelte 没有 runtime。但是如果开发项目的话,这个其实并不是优势,随着项目变大,反而成了劣势。angular/react/vue 项目初期比较大,因为 bundle 里面有 runtime,但是随着组件越来越多,增长不是特别大。而 svelte 正好相反。

虽然 bundle size 的优势不明显,但是 svelte 性能确实不错。

@justjavac svelte 组件之间通信用什么 比如页面左面是个 +/- 各分量百分比 的面板 ,页面右面是饼图 操作 +/-面板以后, 能改变饼图的比例

分析的很详细。此外,当代码量大了之后,更应该从工程方面来寻找解决方案。比如CabloyJS全栈框架有超过30万行代码,后端采用EggJS,前端采用Vue,前端按15万行来算,不算是小工程了。CabloyJS把代码按业务进行模块化切割,比如文件模块消息推送模块工作流模块等等。这样,我们在进行实际开发时,总是在一个模块内部进行。从技术上说,变量、状态、页面被控制在模块内部,避免了污染与冲突;从工程上说,团队分工很容易。此外,也有机制进行模块间状态、逻辑的互相访问和调用,为模块在业务层面的复用也提供了方便

真的写的很好,Vue3虽然解决了一些痛点。但真的,不如去用React了

好像 ng 没人关注~

如何理解“这类框架是现代化前端开发必备的”?你是否知道目前使用 jquery 的网站比例依然高达 97%? 你看到大厂们的前端天天在谈论 Vue/React,但是你去查看他们的网站源码有几个是用 vue 或者 react 实现的? 归根揭底这东西是为了提高前端面试门槛?还是为了让后端看不懂,然后不敢轻易否定前端价值?

@chzhz 看“现代化前端开发”的定义

@waitingsong 什么定义我不管,我只管是不是解决了实际问题。只有解决了问题才会有生命力,否则基本就是自娱自乐。 比如我作为一个后端,要写一点页面,真的离不开 jquery。他实际解决了我不用写原生 JS 操作dom 的问题。 互联网公司大量的产品页面似乎也没有复杂到需要各种模块化工程化组织来实现或者沉淀,而产品的视觉交互体验又都是设计师来决定,前端只是做了一个翻译。很多时候,一个业务多半是来了个新前端,就重新写一套。而很重的那种面向B端的工具应用,这种项目本身非常少。 当然,你要说那些所谓的”现代化前端框架“确实解决了前端生存问题,那也是解决了问题。 如果你要反驳我,请拿一个必要的实际的有普遍代表意义的产品的例子告诉我,这类用”现代化前端开发“是必须,不要掰概念。

我觉得vue 的data渲染模板带来的便捷。但也带来了很多性能上的消耗,有的时候不能依靠足够细致的组件拆分来划分问题。

@chzhz 你jq不用原生操作dom,现代化前端开发根本不用操作dom,只操作数据,这就是进步

@chzhz 就比如ui用的最多的蓝湖,,你用jq开发一个我看看,,,,

@ganshiqingyuan 这种前端重逻辑的工具类软件毕竟是少数啊,而且也不是不可以啊,这个无远开发平台:wuyuan.io,可以用它开发出整个系统,不知道比蓝湖复杂多少倍,但人家就是用 jquery 开发的。再比如这款在线绘图工具也不简单:processon,人家也就是用了 jquery 而已。 你要抬杠,找特例都能找,而我是说普遍情况。一个前端,不懂程序设计的硬功,用 jQuery 写不好,用 vue / react 依然写不好

@chzhz 你用用就知道完全不是一种体验,一种是纯网页的体验,一种是app的体验,,数据操作视图,模块化开发,局部热更新调试这不是jq能比的,

@chzhz 你说jq多那是因为企业官网比较多,那种为了seo肯定是简单的jq js就搞定了,,我自己搞简单的网站也是jq,毕竟东西不多,等你应用变得复杂你再用jq那就是自找罪受,还有就是历史原因,毕竟全世界大多数的网站也不是这四五年开发的,,另外现在银行保险公司金融公司各种企业的内部管理平台你认为数量很少?他们的那些应用业务复杂度都不是你一两周能交接清楚的,那种应用用现代化前端框架开发带来的便利不是一点点,,是工业时代和农业时代的进步

@ganshiqingyuan 是吗,哈哈哈哈,我就在银行工作啊,咋没见有人用什么 react、vue做系统?你可知道银行内部的系统几十年不换?很多系统都是C/S结构的,很多B/S结构的也就是用extjs开发的。花力气更换前端及UI基本就是吃力不讨好,根本不可能立项的。偶尔一些创新项目,基本就是从核心系统后套暴露几个接口给外包弄,可能用一点新前端技术,但是C端的场景都是简单的表单填写和查询。没有人为了开发一个B端系统还去学个vuejs和react 的:)

@chzhz 简单业务写多了

@chzhz 你自己负责的项目不敢换,就觉得别的都是垃圾

@chzhz 而且看了你的账号,,很明显是一个公司的一群人用jq开发的一个什么平台,,然后为了推自己的平台贬低别人的,引流自己的,,当托你还是太嫩了。。。

@ganshiqingyuan 从来没说别的都是垃圾哈,哈哈哈,从来没有,一直在追问事实,强调事实,讲证据,您可以看上下文嘛。 是不是您自己内心充满着”垃圾“这个词汇,然后看到意见不合的人,就觉得它在喷别人垃圾呢? 我不是一直在强调摆论据吗?您前面提到银行金融保险这种B端业务,啥样的不用凭想想哈,直接google,百度 搜图片 XXX银行系统,或者哪怕搜 SAP ERP,金蝶,用友,看看能不能找到所谓的用”现代化前端“做的B端系统。想一想这类系统带给用户的核心价值是什么,UI ?前端开发更爽?公司更省成本?更能获客?20年前没有前端,系统如何做?兄弟,不要情绪化哈~,俺一直在强调讲事实:)

@justjavac 几个月以后,我彻底弃车 Vue 了。React Hooks 用起来比较爽,尤其是配合上 Jotai 这种状态管理工具,比 Vue 开发效率要高。Vue 的 compostion api 搞得不伦不类的。现在感觉 React 的缺点是她缺一套类似于 Svelte 和 Vue 这样的单文件模板机制。css in js / css module 用着还是差点意思

Vue 和 React 同时存在挺好的,Angular 还有很多人在用呢。可以相互竞争相互促进,前端发展到现阶段,没有哪一个技术可以长期领先。

模板语法和图灵完备并没强关联,而是模板语言没有使用宿主语言的作用域

回到顶部