从入门Vue到React | 七日打卡

232 阅读5分钟

Vue

在刀耕火种时代,刚毕业进入公司那会,最火的属 Jquery 。基本上所有的页面离不开 Jquery ,因其封装了很多DOM操作的API以及优雅的链式操作,备受青睐。ajax 请求数据后 $(ele) 获取对应要替换的DOM元素,最后再 append 上去。后面 vue 开始逐渐火起来后,刚好有个新项目,便想着不能太落后了,趁这个机会学(gao)习(shi)下(qing)。

说干就干,撸起袖子打开 Vue 官方文档,一开吓一跳,这内容对当时小白的我都是天文,完全没有概念,萌生打退堂鼓的念头:我用 Jquery 不香吗?有什么是它解决不了的吗? 但最终还是克服恐惧,跟着文档硬啃下去

跟着文档敲敲敲,突然发现有个很感兴趣的小DEMO,改变输入框的值,对应显示的文字相对应的改变。而所需要的仅仅是下面几行代码,当时感觉非常有趣。

<div id="app-6">
  <p>{{ message }}</p>
  <input v-model="message">
</div>
var app6 = new Vue({
  el: '#app-6',
  data: {
    message: 'Hello Vue!'
  }
})

虽然只是一个简单数据监听,但对那时候小白的我可是很神奇的。于是饶有兴致的继续往下啃文档,好家伙,越往下头越来越大,脑子一片懵。各种新奇概念涌上来,什么 双向绑定、指令、组件 等等。过完一遍后真的有点劝退,那时候思想还是停留在通过 js 去操作 dom,一时间这种转变难以适应。直呼太难理解,遂,关机,下班。

第二天,越想越气,不都是 javascript ,有什么难理解的。由于过了一遍文档,想着这次可以找个完整的demo过一下,于是看到了官方自带的 TodoList 。有一个完整示例就好办了,跟着例子敲几遍,不懂的对照着文档慢慢理解,逐渐的理解了这个写法背后的思想。可以更注重的去处理数据,不需要关心dom的变化操作,一切都交给程序。

虽然敲完了demo,但可能还是一知半解,想着还是得实际动手写个页面,理解才会深刻。搜了下 vue 周边的生态,了解到了 vue-cli 脚手架,以及ui框架 element-ui,跟着教程搭建了起来。打开了一个 vue 页面,内心还是激动的(捂脸)。按照自己的想法,边查文档边写了一个简单的表格展示。终于对这种 以数据驱动视图 的操作方法有了理解。

接下来实践直接应用到新项目,越写越得心应手。但此时遇到问题,项目目录结构分散,有点不知道如何组织以及组件命名问题。后面看到了 vue-element-admin 这个项目,以及手摸手教程,真的给了我很多帮助。规范整个项目的结构,包括对权限处理那块。至此对vue也算是入门,体会到 MVVM 的便利性,香!

总的来说,vue学习曲线不是很困难,唯一的可能就是心智负担有点多,因为有很多指令比如 v-bind、v-if 还有插槽等概念,有时候经常要求反复看文档。但熟悉了之后,如鱼得水,非常方便。

React

对于 react 学习,其实在写 vue 的那段时间里,在学(mo)习(yu)群里都在说 jsx 真香, react 真香。出于好奇,去翻了下文档,跟着敲下来。越敲就觉得越觉得这什么玩意,html、js 混在了一起写,太难受了。看 vue 文件的结构多么清晰,template、script、style 三部分各司其职,一眼明了。遂,关掉关掉,这是第一次学习 react 的心路历程。

后面换了家公司,技术栈要统一成 react,这时我才又迫不得已拿起来。其实到这时候vue已经写了挺久时间了,也有意去了解了vue中 渲染函数&jsx 的写法。现在回过头来学习 react,发现好像也就这么回事,无非就是一个表达式,自己组装要返回的东西。

const name = 'Josh Perez';
const element = <h1>Hello, {name}</h1>;

ReactDOM.render(
  element,
  document.getElementById('root')
);

并且出了 hook 之后,对于组件的编写更加简单了,不需要去理会 this 的指向。而且可以将 jsx 作为 prop 传递,这无疑对一些复用的场景来说很便捷。此时只想说,香!

经过一段时间react的编写,越发觉得 vue 上手简单,因为拦截了数据,所以所有操作都帮你做好了,你只需要关注数据的变化,其他响应的操作全都由 vue 处理了,你不再需要去关心 dom 的变化。但是 react 却是提供了最纯的一种 js 处理方法,它没有什么 v-for、v-if,你都需要用 js 自己去遍历去判断。并且得自己去处理渲染优化的问题,因为可能出现更新了某个数据,导致和这个数据无关的组件全部重新渲染。在我看来,react 很考验一个人的组织能力,拿到一个页面后,如果去拆分组件,哪些数据可以提取到外面复用等等,都是需要经验技巧。

小节

讲述了从学习 vue 到最后转 react 过程,其实无论学习曲线怎样怎样难,最主要还是看本身自己,如果打心底就排斥的话,就很难学得进去。都要有总结一套自己学习方法,最重要的还是实践,才能掌握更深。