青训营笔记之响应式系统与React

89 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第5天

React:是Facebook开发的一款JS库。

React的语法是jsx,通过使用这种语法,可以在react代码中直接混合使用js和html来编写代码,这样代码的逻辑就非常清晰,当然也意味着,需要将jsx代码编译成普通的javascript代码,才能在浏览器中运行,或者在服务器端通过webpack进行编译。

React特点

  • 声明式:我们只需要描述UI,而react负责渲染UI, 当数据变动时 React 能高效更新并渲染合适的组件。
  • 基于组件:以组件方式进行开发。构建管理自身状态的封装组件,然后对其组合以构成复杂的 UI。
  • 特殊性:使用特殊的jsx(JavaScript XML)语法。
  • 高效、灵活:React通过对DOM的模拟使用了虚拟DOM,最大限度地减少与DOM的交互。

缺点:

  1. 对于一直使用JS,jQuery的传统前端,React非常不友好。
  2. React强调组件和状态管理,其世界观是面向程序语言的。
  3. Vue.js强调视图的自动同步,其世界观是面向UI脚本的。
  4. React的学习成本较Vue.js高。
  5. React没有全家桶,只做UI。

React与Vue对比

相同之处

虚拟 DOM。映射真实 DOM,通过新旧 DOM 的 diff 对比,更好的跟踪渲染页面。 组件化。将应用拆分成一个个功能明确的模块,每个模块之间可以通过合适的方式互相联系。 构建工具。都有自己的构建工具,通过 Webpack + Babel 去搭建脚手架。 Chrome 开发工具。两者都有很好的 Chrome 扩展去帮助查找 Bug。 配套框架。Vue 有 Vue-router 和 Vuex,而 React 有 React-router 和 React-Redux

不同之处

模板 VS JSX。Vue 推荐编写近似常规 HTML 的模板进行渲染,而 React 推荐 JSX 的书写方式。 监听数据变化的不同。Vue 使用的是可变数据,而 React 更强调数据的不可变。在 Vue 中通过 v-model 绑定的数据,用户改变输入值后对应的值也相应改变。而 React 需要通过 setState 进行设置变化。 Diff 不同。Vue 通过双向链表实现边对比边更新 DOM,而 React 通过 Diff 队列保存需要更新的 DOM,得到 patch 树,再统一批量更新 DOM。 开发团队。Vue 一开始核心就是 Evan You,后面再招了其他人组成团队;React 的话是一开始就是 Facebook 团队搞的。所以网上的人比对源码情况的话,Vue 的比 React 的简单易懂点。

总结

React是以降低前端开发的复杂度为原则的。使用React编写的代码也易于理解,所以适合大规模多人开发,能提高项目的开发效率和质量。