Vue3.0 从入门到学会 React
https://weibo.com/arttechdesign
糟糕的 hooks 还不如 React 。
https://weibo.com/arttechdesign
糟糕的 hooks 还不如 React 。
Vue 就是这边学学,那边抄抄。
完了,至于什么高阶组件,hooks,hoo care?我们是搭积木,谁会在积木上做出更高阶的积木来
vue 的占比已经很好的说明了,这些你们看不上的 curd 页面开发,反倒是很多公司的日常
The function based API provides the same level of logic composition capabilities as React Hooks, but with some important differences. Unlike React hooks, the setup() function is called only once. This means code using Vue’s Composition API is:
1. In general more aligned with the intuitions of idiomatic JavaScript code;
2. Not sensitive to call order and can be conditional;
3. Not called repeatedly on each render and produces less GC pressure;
4. Not subject to the issue where useCallback is almost always needed in order to prevent inline handlers causing over-re-rendering of child components;
5. Not subject to the issue where useEffect and useMemo may capture stale variables if the user forgets to pass the correct dependency array. Vue’s automated dependency tracking ensures watchers and computed values are always correctly invalidated.
6. We acknowledge the creativity of React Hooks, and it is a major source of inspiration for this proposal. However, the issues mentioned above do exist in its design and we noticed Vue’s reactivity model happens to provide a way around them.
你这是写过 css 用过 jq 的后端
完全不写 css 、jq 的后端更喜欢 react
这么说吧, 学 react 需要更少的 html 知识
只要知道 div 和有限的几个 style 就可以上手了
对于完全没有前端基础的人来说 react 入门更简单
坐看贵圈这一波大战
Vue 确实对新手友好没错,而且对国人开发者很友好,但是他提到的几个点我完全 get 不到 Vue 的优势。至于你跟他讨论的过程我看了都要替你心塞。。。
btw,逛 V 站这么久,凡是前端框架相关的讨论,或者 iPhone vs Android,或者 MacBook vs Windows 笔记本,你都能看到他的“精彩”言论。
如果 V 站有点“踩”的功能的话,我觉得我很有可能给他的每个回答都点踩。。。
首先 vue 完美传承了前端的技术路线,css 、js 、html,一切都是你熟悉的东西,只不过现在以工程化的东西给你拼一起了
前端最重要的是给别人看,如果你的项目是展示优先,交互第二,那么 vue 非常适合你,因为你会在 html 部分,也就是 vue 的 template 部分有非常大的工作量
很多人吹前端,都必须带上状态管理,但是你必须知道,页面多、元素多不等于复杂,一切能用多页面、iframe 、子模块拆分的方式实现的东西,再多也不叫复杂,这些东西归根结底还是页面部分工作量大,可能交互就是一两个按钮、点几个链接。如果你有这种需求,那你就能享受到 vue 的好,react 的 jsx 没有源生的 for 、if,那意味着你必须用 map 和短路运算完成这些操作,一个两个还可以,等你逻辑多了,render 部分光代码对齐都是一种奢望,美观度要被 vue 锤上天。
你也许会说,map 和短路,className 这些东西,不是源生的 js 么?恰恰因为前端三段式加起来东西太多,要学的太多,所以 vue 以一种独特的方式帮你减少了学习方式:
首先 vue 在模板标签设计的时候,沿用了 html 的标签名,你写 class,style,在 vue 里依然是 class,style,className 是什么?现在不是鼓励不直接操作 dom 么,你可以不知道。在命名上,vue 处处闪耀着以人为本的光辉,所谓的学习成本,不过是水到渠来,不学就会了,几乎所有的语言都有 if 、for,那么模板就给你 v-if 和 v-for,at 这个符号有在。。的意思,那么 at 加上事件就是在这个事件触发的时候调用什么。同理,你会发现 vue 的 api 设计非常简练,不像 react 的 api,一看就是 cocoa 那套又长又臭的命名方式,没个自动补全都打不对。
vue 为什么有市场?因为大家的需求就这么单纯,今天说 SPA,明天说 SPA,真正人人在用的 SPA 有几个,的却,如果你想开发 SPA,那么 react 、angular 可能更适合你,但是转念一想,SPA 的目的是要取代一部分桌面应用,然而这些桌面应用都是深耕了行业几十年,谁没年独家本领,连同样对手都打不过,SPA 拿什么去斗?技术路线吹上天,最后做出来的东西就是一个简单的内容展示系统,至于么?
关于 mixin 和高阶组件这些东西,我早就说过,(业务开发)前端太面向对象是反直觉的,在开源框架、现有解决方案完善的今天,组合模式做的加法才是正确的方式,我需要一台车,那么我只需要购买引擎、车体、轮胎,组装起来就有一台车,如果有空调,那就加一台空调进去,而不是我先找一个抽象的 vehicle,然后继承得到一个 car,最后再继承一下得到更高阶的 sports-car,现有的框架已经能给我 sports-car,一个参数控制速度,即可以买菜又可以飙车,我为什么要 vehicle 和 car 这些东西?
对这三个框架,我想了如下的比喻
angular 是一个施工队,几乎无所不能,但是太重了,我挖了水井没必要请一批人来
vue 是一套规范指南,你要在我给定的要求下开发,虽然你失去了一部分,可能也不是最炫酷的,但是按着要求做就可以盖起房子来,而且不会那么容易就塌掉
react 是一套力学和建筑学教材,最贴近原始理论,给你最大的自由,没有什么约束,但是实际搞起来自由是要付出代价的
做后端的,主要用 vue,新建也倾向于 vue ( 2.x ),
也写过一些 react,觉得也有很多吸引我的地方,对前端了解不深随便说一下。
1.数据流问题,vue 的双向绑定有时会出现玄学 bug (也可能是我菜) react 的 setState 相对好些,就是代码多点。
2.组件抽象,如果只有两个 div 嵌套的组件,在 react 里很容易就在同一个文件里封装成一个函数组件,且直接 export 就可以给别处用,vue 里则要新建个 x.vue 文件,template 啥的写一套(可能也有类似的方法我不知道吧,我见过的都是 div 套一个 img 的 avatar.vue 这种)代码量 vue 多一些,但是文件结构上 vue 更清晰,仁者见仁吧。
3.关于 react 的 jsx,讲真 react 让我有点爱上了 js,all in js 的哲学某个角度上戳到了我的点,说句不好听的,在用 react 之前我都不知道 js 的展开运算符和解构。。。vue 撸东西确实快,但是就个人而言,react 更酷,而且 map 循环渲染一点也不奇怪,如果你愿意,甚至可以直接写 for 循环,花括号里写 html,对于后端来说更像前后端没分离时候的模版语法。
总之,目前来说,干活我选 vue,自己折腾我选 react 。
如果前端开发对 FP 没什么概念,很难理解 High order component,side effect 之类的东西。
react 的 hooks 把 Component 与 Side effect 分离,这种分离是比模版 /数据分离更胜一筹的进步。所以 vue 的作者看了后也一心想把这部分抄过去是很正常的。
但是 Vue 底层的 two-way binding 实现(defineReactive) 本质上让 side effect 很难根除,所以当 react hooks 出来的时候,我就毅然而然从 vue 转 react 了。
不知对不对。
其实对于 vue 和 react 不用尽力去黑,技术栈选择看公司的业务规模。之前选择 vue 作为技术栈是组员都没有 mvvm 框架类似开发经验,从 jq 转过来,大多数切图为主。在业务以后台管理系统为主,持续迭代后,vue 感觉开始吃力,一是生态的插件组件不够丰富,像 element-ui 这种 kpi 项目,团队都跑宇宙条了,剩下维护的人基本不多了。在人员不加情况下,业务线越来越多,更多流水线业务,其实选中 umi+ant 更加跟的上。在做 editor 制作工具复应用上组员引入了 react 的组件,通过 vuera 整合,项目同时存在了 vue 和 react
如果重来,根据我们的业务,会选 react 技术栈吧,无关两种框架优劣,还是从实际出发
1. 别人的好自己的不能学,自己的好别人不能想,这圈子还怎么发展?闭关锁国是政治正确了?退一步讲,Vue 就从 Angular 「拿来主义」了又怎样,Vue 从来也没说这是原创啊。基于类 HTML 属性实现指令系统,Angular 和 Vue 都不是首创,怎么到了 Vue 头上就成抄袭原罪了,看不明白。State 和 Hook 同理。(不过讲真,Vue 和 React 的 State 和 Hook 是一回事吗?)
2. 这个最让人无语了,敢情国人开发是原罪,国人开发的产品在国人圈子里宣传也是原罪。在这一点上我真是可怜肖战,活生生被粉丝消费了。
PS: 我不了解娱乐圈,「肖战」一事只是刷微博时间线看到的,可能有理解错误的地方,仅供举例,大家明白我的意思就好。