面试题-Vue2和Vue3的区别

在这里插入图片描述

文章目录

      • 1. 响应式系统
      • 2. 组合式 API (Composition API)
      • 3. Fragment (碎片)
        • 4. Teleport (传送门)
      • 5. 性能改进
      • 6. 移除或改变的功能
      • 7. 构建工具
      • 8. TypeScript 支持


Vue 2 和 Vue 3 之间存在许多重要的区别,这些区别涵盖了性能、API 设计、组合式 API(Composition API)、响应式系统以及构建工具等方面。以下是一些关键的区别,并附带代码示例来加以说明。

1. 响应式系统

Vue 2 使用 Object.defineProperty 来进行数据劫持,它只能对对象的属性进行劫持,对于新增的属性或者数组的下标变更则无法监听。

Vue 2 示例:

// Vue 2 响应式数据  
data() {  
  return {  
    message: 'Hello Vue 2!'  
  };  
}

Vue 3 使用 Proxy 来实现响应式系统,它可以对对象进行更深层次的监听,包括新增属性和数组变更。

Vue 3 示例:

// Vue 3 响应式数据  
import { ref } from 'vue';  
  
setup() {  
  const message = ref('Hello Vue 3!');  
  
  // 可以通过message.value进行访问和修改  
  return {  
    message  
  };  
}

2. 组合式 API (Composition API)

Vue 3 引入了 Composition API,允许我们更加灵活地组织组件逻辑。

Vue 2 示例 (Options API):

export default {  
  data() {  
    return {  
      count: 0  
    };  
  },  
  methods: {  
    increment() {  
      this.count++;  
    }  
  }  
};

Vue 3 示例 (Composition API):

import { ref } from 'vue';  
  
export default {  
  setup() {  
    const count = ref(0);  
    const increment = () => {  
      count.value++;  
    };  
  
    return {  
      count,  
      increment  
    };  
  }  
};

3. Fragment (碎片)

Vue 3 支持组件有多个根节点。

Vue 2 示例 (需要根节点):

<template>  
  <div>  
    <header>...header>  
    <main>...main>  
    <footer>...footer>  
  div>  
template>

Vue 3 示例 (可以没有根节点):

<template>  
  <header>...header>  
  <main>...main>  
  <footer>...footer>  
template>
4. Teleport (传送门)

Vue 3 允许我们将模板的一部分“传送”到 DOM 树中的任何位置。

Vue 3 Teleport 示例:

<template>  
  <teleport to="body">  
    <div id="modal">...div>  
  teleport>  
template>

在这个例子中,

你可能感兴趣的:(vue3,vue,vue.js,javascript,前端)