Open
Description
React 的特点
- 由
Facebook
出品,偏运行时的框架 - 使用 JSX 语法来书写模板
- 虚拟 DOM
- 单向数据流
- 类组件和函数式组件,React Hooks
- 周边生态丰富,React 全家桶
从学习曲线看,React 需要有完备的 JavaScript (ES6) 基础知识,同时要了解函数式编程的概念,以及学习 React 配套的一系列库才能更好的发挥 React 的优势。
Vue 的特点
- 由
尤雨溪
个人开发,目前有个官方团队在维护,运行时 + 编译时的框架 - 使用类 HTML 模板来描述 UI
- 虚拟 DOM
- 响应式系统非常强大
- 单文件组件, js 逻辑,样式和模板都在同一文件里,还有 Composition API 的加持
- 轻量,整个 Vuejs 打包后体积非常小,20 几 k 左右
从学习曲线看,Vue 对前端新手来说更友好,直接可以上手开发,语法简单,实现业务功能方便快捷。
React VS Vue
从框架设计层面上看:
- React 背靠 Facebook 这样的大公司,它的诞生就是提出 UI 开发的新思路,更像是打好了地基,然后引导用户在这基础上去创造延伸出更多玩法。这点从 JSX 语法描述 UI 可以看出,它需要你掌握一定的 JS 基础。
- Vue 的定位就是尽可能降低前端开发门槛,用户只需掌握基本的 HTML,CSS 和 JavaScript 就可以快速搭建出应用。Vue 在设计上更清晰于「多为用户做些事情」,例如数据改变时,UI 会自动刷新;而在 React 里,你需要手动调用 setState 等 API 来告诉 React 需要重新渲染了。
从数据逻辑层面:
两者都是采用单向数据流,只不过 Vue 在此基础上搞了个 v-model 的语法糖来实现数据双向绑定。Vue 的思路是去拦截数据的读写操作,来实现更好更快地渲染;而 React 推崇函数式,UI = render(data) ,你给一份数据,然后自己调用 API 进行局部刷新。
在逻辑复用层面,这两者都是从 Mixins --> Hoc --> Render props --> Hooks 的过程
React | Vue | |
---|---|---|
UI 描述 | JSX | 类 HTML 的模板语法 |
数据流 | 单向 | 单向 + 数据双绑的语法糖 |
逻辑复用 | Hoc & Render props & Hooks | Mixins & Slot & Composition API |
渲染更新 | 虚拟 DOM + dff | 基于响应式系统的虚拟 DOM 优化 |
学习曲线 | 较高 | 较低 |