- React 以 JavaScript 为中心,而 Vue 使用混合 HTML 模板/JS。
- React 使用推送更新模型,而 Vue 通过观察实现反应性。
- Vue 有更多的内置。React 更准系统并且依赖于社区。
相同点:
- 数据驱动视图
- 组件化
- Virtual DOM
在性能方面Vue.js与React的区别
(1)渲染性能。渲染用户界面的时候,DOM的操作成本是最高的。那为了尽可能地减少对DOM的操作,Vue.js和React都利用虚拟DOM来实现这一点,但Vue.js的虚拟DOM实现的权重要轻得多,因此比React的引入开销更少。Vue.js和React也提供功能性组件,这些组件由于都是没有声明、没有实例化的,因此会花费更少的开销。当这些都用于关键性能的场景时,Vue.js将会更快。
(2)开发中性能。在开发中,Vue.js每秒最高处理10帧,而React每秒最高处理不到1帧。这是由于React有大量的检查机制,这会让它提供许多有用的警报和错误提示信息。Vue.js在实现这些检查时,也更加密切地关注了性能方面。
(3)更新性能。在React中,当一个组件的状态发生变化时,它将会引起整个组件的子树都进行重新渲染,从这个组件的根部开始。为了避免子组件不必要的重新渲染,需要随时使用shouldComponentUpdate,并使用不可变的数据结构。在Vue.js中,组件的依赖关系在渲染期间被自动跟踪,因此系统能够准确地知道哪些组件实际上需要重新渲染。这就意味着在更新方面,Vue.js也是快于React的。在HTML及CSS方面Vue.js与React的区别
React推荐的做法是JSX, 也就是把 HTML 和 CSS 全都写进 JavaScript 中,即 all in js; Vue 推荐的做法是 template 的单文件组件格式(简单易懂,从传统前端转过来易于理解),即 html,css,JS 写在同一个文件(vue也支持JSX写法)
这个差异一定程度上也是由于二者核心思想不同而导致的。
Vue 的模板语法的一个优点是,因为它更严格,所以编译器能够执行更多优化,例如分离出静态模板内容以避免重新渲染。在扩展方面Vue.js与React的区别
(1)向上扩展。
①Vue.js的路由库和状态管理库都是由官方维护支持且与核心库同步更新的。React则是选择将路由库和状态管理库这些问题交给社区维护,因此创建了一个更分散的生态系统。但React的生态系统相比Vue.js更加多样化。
②Vue.js提供了Vue-cli脚手架,能让开发者非常容易地构建项目,包含了Webpack、Browserify,甚至No Build System。React在这方面提供了create-react-app,但可能还存在一些局限性。
(2)向下扩展。
学习React需要了解JSX和ES 2015。而Vue.js使用相对比较简单,只需要引用以下语句就可以使用了,开发环境时将其替换成min版的即可。