为什么我们放弃了 Vue?Vue 和 React 深度对比
发布于 6 个月前 作者 Q-Qplus1s 5871 次浏览 来自 分享

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

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

13 回复

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 组件之间通信用什么 比如页面左面是个 +/- 各分量百分比 的面板 ,页面右面是饼图 操作 +/-面板以后, 能改变饼图的比例

Vue 3已经出来了,感觉性能会有提升,建设尝试。

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

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

回到顶部