内部实现什么样,对使用者来说并不重要,暴露给用户的 api 才决定代码的组织形式。
react 的形式是 functional 接口,数据的组织形式是单向的,整体概念上是一致的。
vue 的组织形式可一点儿都不 functional,这点对不熟悉 fp 的用户是非常友好的。再加上 template 为主(我只在 storybook 里面用 jsx,因为实在不想专门写控件),导致不得不制造许多概念,才能满足代码复用的需求,比如 mixin、slot 什么的。
再延伸出去就是 react + redux vs vue + vuex 的问题。redux 可以说概念十分的简单,只要掌握了 immutable、pure function 就不会出错,跟 react 的思路是一致的。而 vuex 有点儿奇怪的,state - data,getter - computed,同步更新 mutation、异步 action - method,看起来一一对应,但 state 其实是 functional,只能读、走 action 更新。这与 data、computed { get, set } 是格格不入的,所以新手很容易用错。似乎说过下个版本要简化 vuex 接口,不知道会不会对新手更友好些
【 在 beep (菜M.喵星耗子) 的大作中提到: 】
: react和vue的核心区别是reactivity的实现方式。
: 理论上vue里面的computed watch也都不是必要概念,完全可以和react一样留给用户自己实现。父子之间的event传递也可以转化为函数prop的传递。
: 所以其实任何一个UI框架的核心概念也就是props和state嘛。本质区别还是怎么检测变动。react hooks搞得那么magical,就和react的检测机制有关。vue把检测放在了proxy/gett/setter层面,比较精细,所以vue开始做类似hooks的api的时候感觉更自然,更直观好理解。
: ...................
--
FROM 125.238.192.*