最近面到很多大公司的时候,小编都会碰到一个很尴尬的问题,很多大公司的技术栈都是React,但是小编学的是Vue,其实从本质上来说两者都是比较优秀的前端框架,所以有些面试官会问到Vue和React的区别。小编认真整理了一些自己所知道的Vue和React的区别,给大家分享分享。
1. 模板语法 vs JSX
模板示例(Vue) :
<template> <div> <p>Hello, world!</p> <my-button @click="handleClick">Click me</my-button> </div></template><script>// 定义一个按钮组件Vue.component('my-button', { template: '<button><slot></slot></button>'});export default { methods: { handleClick() { console.log('Button clicked'); } }};</script>
JSX 示例(React) :
import React from 'react';// 使用 JSX 描述一个简单的按钮组件const Button = ({ onClick, children }) => { return <button onClick={onClick}>{children}</button>;};// 在 JSX 中使用 Button 组件const App = () => { const handleClick = () => { console.log('Button clicked'); }; return ( <div> <p>Hello, world!</p> <Button onClick={handleClick}>Click me</Button> </div> );};export default App;
2. 组件通信
Vue 组件通信示例 :
父组件向子组件传递数据:
<template> <div> <child-component :message="parentMessage"></child-component> </div></template><script>import ChildComponent from './ChildComponent.vue';export default { data() { return { parentMessage: 'Message from parent' }; }, components: { ChildComponent }};</script>
子组件接收数据:
<template> <div> <p>{{ message }}</p> </div></template><script>export default { props: { message: String }};</script>
React 组件通信示例 :
父组件向子组件传递数据:
import React from 'react';import ChildComponent from './ChildComponent'; class ParentComponent extends React.Component { render() { return ( <div> <ChildComponent message="Message from parent" /> </div> ); }}export default ParentComponent;
子组件接收数据:
import React from 'react'; class ChildComponent extends React.Component { render() { return ( <div> <p>{this.props.message}</p> </div> ); }}export default ChildComponent;
这些示例演示了父组件向子组件传递数据的过程。在 Vue 中,通过 props 将数据传递给子组件;在 React 中,也是通过 props 实现相同的功能。
3. 状态管理
4. 生命周期
5. diff算法
React 的 diff 算法 :
Vue 的 diff 算法 :
6.不同的页面更新的通知方式
7.不同的监听方式
早期的Vue与React
当然,随之而来的是不同的性能问题,Vue体现在大量Watcher带来的性能损耗上面,React则体现在Diff算法的计算时间中(虚拟Dom计算时间过长会导致卡顿)
不同的解决方式