vsVue
首先要找到核心差异:
Vue进行数据拦截,所以对侦测数据的变化更精确,对后续的hooks和function based api也提供了很多遍历。
React推崇函数式,直接进行局部重新刷新,其实更简单;但是怎么去刷新的时间就交给了开发者。
以及数据传递方式:Vue是双向 更为无序;React 是单向
vue3可以做到dom diff,是因为vue可以对template的静态分析;但React掌管的实际就是一堆React.createElement的局部调用,无法从模板层面进行静态分析。
React的HOC对应到vue里是什么?-mixin
不过hoc是非侵入的 而mixin侵入,并且如果mixin嵌套的话,接下来的事情也很难办。
Vue如果用高阶写的话,好麻烦哦。需要自定义render这些。
使用HOC的优势:
-
减少对原始组件的入侵,降低耦合。HOC中,原始组件只用考虑自身逻辑,不用考虑,也感知不到HOC对它做了什么。而mixin,组件在内部需要使用mixin的计算属性(更复杂的mixin还会用到生命周期和methods方法).
-
权限控制方便集中管理,直接在routes配置中管理各个页面配置,而不是分散在各个页面组件内部。
-
避免命名冲突。如果页面自己有自己内部的权限控制,刚好也有个computed属性叫hasRight呢?在HOC下没问题,但mixin就不行了。
Vue几个小小的不足:
- 面向对象篇:
组件上挂载的很多对象,编辑器不能追溯来源
官方配件(router/vuex)和社区都流行直接往Vue.prototype上挂东西,this.$router this.$store this.$xxx满天飞,照样不利于编辑器的语义理解,大项目里面很难简单地做项目内跨文件自动搜索引用/自动重构(还是import/export对编辑器比较友好)
另外,像egg也挂了东西,但是得益于它编写了d.ts...
- 模板引擎篇:
很多语法糖/自定义指令要记(它们实际可以没有),还有绑定事件的写法…每次都要查文档 //不过这也是它包办一切的思路
模板引擎没有词法范围,比如很可能一个字符串代表一个函数…
v-if/v-for不支持函数和filters,还得按computed来写,不如React在render中的数据预处理舒服
- 单文件的组件化方案
vue.js有哪些设计缺陷? - 伊撒尔的回答 - 知乎 https://www.zhihu.com/question/315734889/answer/621507483
不过我确实很喜欢vue的keep-alive!