0%

Vue入门总结

Vue3 和 Vue2 的区别

1. 架构与性能

Vue 2

  • 基于 Options API,逻辑分散在 datamethodscomputed 等选项中
  • 使用 Flow 进行类型检查
  • 性能优化有限,例如虚拟 DOM 的更新效率较低

Vue 3

  • 引入了 Composition API,允许将逻辑按功能组织,提升代码的可读性和复用性
  • 使用 TypeScript 重写,提供了更好的类型支持
  • 性能大幅提升:
    • 虚拟 DOM 重写,优化了 diff 算法
    • 支持 Tree Shaking,减小打包体积
    • 更好的响应式系统(基于 Proxy

2. 响应式系统

Vue 2

  • 使用 Object.defineProperty 实现响应式
  • 无法检测到对象属性的新增或删除,需要通过 Vue.setVue.delete 处理
  • 数组的某些操作(如通过索引修改元素)无法触发响应式更新

Vue 3

  • 使用 Proxy 实现响应式,解决了 Vue 2 中的限制
  • 支持直接监听对象属性的新增和删除
  • 数组操作更自然,无需特殊处理

3. Composition API

Vue 2

  • 使用 Options API,代码组织方式:
    1
    2
    3
    4
    5
    6
    export default {
    data() { ... },
    methods: { ... },
    computed: { ... },
    watch: { ... }
    }

Vue 3

  • 使用 Composition API,代码组织方式:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import { ref, computed, watch } from 'vue'

    export default {
    setup() {
    const count = ref(0)
    const double = computed(() => count.value * 2)

    watch(count, (newValue) => {
    console.log('count changed:', newValue)
    })

    return { count, double }
    }
    }

4. 生命周期

Vue 2

  • beforeCreate
  • created
  • beforeMount
  • mounted
  • beforeUpdate
  • updated
  • beforeDestroy
  • destroyed

Vue 3

  • setup (替代了 beforeCreatecreated)
  • onBeforeMount
  • onMounted
  • onBeforeUpdate
  • onUpdated
  • onBeforeUnmount
  • onUnmounted

5. 指令系统

Vue 2

  • v-model 只能用于表单元素
  • 自定义指令使用 Vue.directive 注册

Vue 3

  • v-model 可以用于任何组件
  • 支持多个 v-model 绑定
  • 自定义指令支持更多生命周期钩子

6. 其他重要变化

  1. TypeScript 支持

    • Vue 3 使用 TypeScript 重写
    • 提供更好的类型推导
    • 更好的 IDE 支持
  2. 新特性

    • Teleport 组件
    • Suspense 组件
    • 多根节点组件
    • 更好的 Tree-shaking 支持
  3. 性能优化

    • 更小的包体积
    • 更快的渲染速度
    • 更好的内存使用

7. 迁移建议

  1. 渐进式迁移

    • 使用 @vue/composition-api 在 Vue 2 中尝试 Composition API
    • 使用官方迁移构建版本
    • 使用迁移助手工具
  2. 重点关注

    • 全局 API 的变化
    • 生命周期钩子的变化
    • 响应式系统的变化
    • 模板语法的变化
  3. 最佳实践

    • 使用 TypeScript
    • 采用 Composition API
    • 利用新特性优化代码
    • 注意性能优化

8. 总结

Vue 3 相比 Vue 2 有重大改进:

  • 更好的性能
  • 更好的 TypeScript 支持
  • 更灵活的代码组织方式
  • 更现代的开发体验

建议新项目直接使用 Vue 3,现有项目可以根据实际情况决定是否迁移。