首先说一下我vue跟react都用过,先学的vue,后学的react,在公司用react做过三个月业务开发(大数据管理平台,反正就是后台管理系统,什么左边是树,右边是table,taoble上面是各种搜索选择按钮,点进去详情页或者弹窗),在公司vue只是写过很简单的东西,vue用的较多的地方是用于毕设写前台(交易平台,展示商品那些东西)。其实两者来说都有一定的实践。之所以更青睐react最主要是因为react有hooks。我目前只用过hooks而没用过hooks的轮子-umi(确实用了hooks会比原来class少写很多代码),相信用了hooks的轮子(相当于element-ui之vue,ant-design之react),大大提高开发效率。
一、react开发团队牛逼、长远来看更稳定
首先vue是尤雨溪为代表的团队进行开发,layui是谁开发的,闲心,再看看layui社区,基本上都不怎么去回答问题。而且很多插件都是官方的,比如vue-cli,vue-router,基本上都是官方给的。而react是facebook里面顶级高级牛逼哄哄的工程师团队开发的,而且react团队只对核心代码进行维护,剩下的插件都交给社区,比如路由啦,redux啦,通通是其他非react团队开发,这样一来精力会更集中。而且个人项目风险很大,哪一天vue不维护了,很难受。而且精力有限,啥插件都vue团队来开发来维护,没有像react插件相互竞争,方式可能没那么好,因为得所有事情都做好,当然现在vue也做的挺好,啥插件都有,vue全家桶都很完整,开箱即用,基本上react全家桶有的东西vue也抄过去了。
二、react有了hooks,打破了react学习难度大一说
如果说react没这个东西我是不会那么大力支持react。因为react写的代码会多一些。得去一段时间理解react的生命周期。会比vue上手难一些。
先说说组件化。为什么市面上除了老项目会使用jq,大部分都会使用现代框架。(现代框架指angular、vue、react三大框架,传统框架指jq)。一般来说看学什么框架用什么框架看大部分中小型企业用什么,就学什么,用什么,这个绝对错不了。只有大厂有那个精力和财力去各种折腾各种尝试,发现这个框架不行再用另一个。jq之所以淘汰是因为jq的出现最大的意义在于兼容各种浏览器,减少原生代码书写。现在IE不需要兼容了,所以jq也基本上结束了。而且操作dom会带来性能瓶颈。vue或react都有的虚拟dom会大大减少真实dom操作,所以用vue或react体验会好非常多,页面切换很快,而且代码也少写非常多,大大提高开发效率。组件化就是封装,把一个个组件封装起来,多处调用。
用了现代框架大家就会知道组件化到底有多爽。但是还不够爽,还有更爽的,那就是hooks。
现在说这个可能有点超前。反正组件化的意思就是封装一个UI和逻辑,封装好了之后可以多处调用,但是比如UI相同,逻辑不同,那就得封两个组件。怎么解决这个问题呢(使用过一段时间现代框架就会发现这个问题)。hooks有个好处就是可以封装逻辑。我个人看了这篇觉得https://zhuanlan.zhihu.com/p/103150605?utm_source=wechat_session,hooks是又一大进步。如果说vue或react是jq一个非常大的进步,那么hooks就是组件化的另一个更高的进步。大家都说react难用,但是有了hooks,不再需要管那些复杂多变的生命周期,会useState和useEffect就可以了。所以说react再用上hooks,不存在react成本高一说。
如果react+antd+umi对比vue+element-ui(vue-hooks还不成熟),有没有可能代码更少,我不知道,因为我没用过umi,但是我很期待。
为什么用了vue还用element-ui,因为element-ui已经帮你封装了大量的轮子,拿来即用,大大减少代码,基本上自己再封装一下业务组件就够用了。如果说我们使用hooks再配个umi,那相比简直就是如虎添翼,又进一步少写代码。起飞了呀。
hooks是react16.8才有的,还很新。而且很多公司还没开始用这个,所以大家固有的react更难是因为大家没用过hooks,包括我之前在公司他们用的也是class写法(加入时hooks已经存在了),非常麻烦。但是antd4.0既然敢用hooks替代class写法说明1.class真的问题很大,2.hooks是非常成熟的,不然也不敢随意在新版本全部替代成hooks写法。
三、更适合后台管理系统
我们这个项目都是各种后台管理系统,(表格啊,详情啊,搜索啊、树、表单啊那些东西),我觉得react会更适合一些。
还有就是react兼容ts更成熟一些。ts也是一大趋势。vue3.0源码已经是ts来写。vscode就是electron还有ts来写。我在面试的时候很多企业也在打算之后用ts来写代码。ts更适合大型项目。因为大型项目有些bug如果找不到是很痛苦的。有些bug就是因为这个类型的问题。ts是强制让你number类型就是number类型而不是js的没有类型。传啥都可以。