当前位置: 首页 > news >正文

Vue2 vs Vue3 生命周期全面对比:created 的进化与革新!!!

🎯 Vue2 vs Vue3 生命周期全面对比:created 的进化与革新


🔥 核心差异全景图

在这里插入图片描述


一、钩子函数命名与定位变化

1. 命名规范革新

Vue2 钩子Vue3 钩子 (Options API)Vue3 Composition API
beforeCreate❌ 无setup() 替代
created✅ 保留setup() 替代
beforeDestroybeforeUnmountonBeforeUnmount
destroyedunmountedonUnmounted

关键变化解读
语义优化:Vue3 将 destroyed 改为 unmounted,更精准描述组件卸载行为
命名统一:所有钩子前缀改为 on,如 onMounted


2. created 的定位迁移

Options API
Composition API
Vue2
created: 数据初始化/异步请求
Vue3
setup(): 替代 created 的所有功能

Vue2 的 created

export default {
  created() {
    console.log('响应式数据已就绪:', this.message) // ✅ 可访问 data
    this.fetchData() // 典型异步请求场景
  }
}

Vue3 的替代方案

import { ref } from 'vue'
export default {
  setup() {
    const message = ref('')
    // 🔥 直接执行相当于 created
    console.log('响应式数据已就绪:', message.value)
    fetchData() // 无需通过 this 访问
    return { message }
  }
}

二、执行机制与阶段差异

1. 生命周期阶段对比

Vue2_Flow
beforeCreate → created → beforeMount → mounted
Vue3_Flow
setup() → onBeforeMount → onMounted

Vue2 顺序

父 beforeCreate → 父 created → 父 beforeMount  
→ 子 beforeCreate → 子 created → 子 beforeMount → 子 mounted  
→ 父 mounted

Vue3 特性
异步挂载优化:通过 <Suspense> 实现异步组件加载
组合式逻辑聚合setup() 合并了 beforeCreatecreated 阶段


2. 调试能力增强

Vue3 新增开发模式专用钩子:

import { onRenderTracked, onRenderTriggered } from 'vue'

setup() {
  onRenderTracked((e) => {
    console.log('依赖追踪:', e) // 响应式依赖收集过程
  })
  onRenderTriggered((e) => {
    console.log('触发更新:', e) // 数据变更触发重新渲染
  })
}

三、性能优化与破坏性变更

1. 销毁阶段内存管理

操作类型Vue2 方案Vue3 优化方案
定时器清理beforeDestroyonBeforeUnmount
事件解绑destroyedonUnmounted
第三方库释放手动调用销毁方法结合 watchEffect 自动清理

代码示例

// Vue3 自动清理示例
setup() {
  const timer = ref(null)
  watchEffect((onInvalidate) => {
    timer.value = setInterval(() => {}, 1000)
    onInvalidate(() => clearInterval(timer.value)) // 自动销毁
  })
}

2. 异步更新机制

Vue3 采用 Proxy 实现响应式,优化更新性能:
批量更新:多个数据变更合并为单次渲染
Tree-shaking 支持:未使用的生命周期钩子不会打包


四、迁移适配指南

1. 代码改造策略

场景Vue2 写法Vue3 适配方案
数据初始化created() 中赋值setup() 直接声明响应式变量
全局事件总线EventBus.$on使用 provide/inject 或 Pinia
DOM 操作mounted() 访问 $elonMounted() + ref 引用

2. 常见问题避坑

  1. this 丢失问题
    Composition API 中不再通过 this 访问实例,需用 getCurrentInstance()
  2. 异步请求竞态
    使用 AbortControllerwatchEffect 自动取消
  3. 插件兼容性
    检查第三方库是否支持 Vue3 的 app.use() 注册方式

五、总结:技术选型建议

  1. 新项目
    • 首选 Vue3 Composition API,利用 setup() 的代码组织优势
    • 搭配 <script setup> 语法糖提升开发体验
  2. 旧项目维护
    • 渐进式迁移:单个组件改用 @vue/compat 兼容模式
    • 优先重构高频修改的组件
35% 65% Vue2 vs Vue3 生命周期使用率 (2025) Vue2 Options API Vue3 Composition API

相关文章:

  • String数据结构之验证码实战
  • Unity3D仿星露谷物语开发32之地面属性决定角色动作
  • 【Django】教程-5-ModelForm增删改查+规则校验【正则+钩子函数】
  • 数据库表省市区分析
  • Kubernetes可视化面板——KubePi(Kubernetes Visualization Panel - kubepi)
  • Android BottomNavigationView 完全自定义指南:图标、文字颜色与选中状态
  • Outlook客户端无法连接到服务器,添加账户显示“无网络连接,请检查你的网络设置,然后重试。[2603]”
  • 优秀的 React 入门开源项目推荐
  • Redis 源码硬核解析系列专题 - 结语:从源码看Redis的设计哲学
  • Meta Llama 3:开启大语言模型新纪元
  • 美股恐惧贪婪指数监控
  • Kafka 实战指南:原理剖析与高并发场景设计模式
  • Python Cookbook-4.17 字典的并集与交集
  • 翻译: 人工智能如何让世界变得更美好一
  • 【Easylive】项目常见问题解答(自用持续更新中......)
  • 量子退火实用案例(1):量子退火求解化学中的分子吸附问题,10小时缩短为15分
  • 周总结aa
  • 多段圆弧拟合离散点实现切线连续
  • 【Vue2插槽】
  • PDF解析黑科技:从OCR-Free到多模态大模型的进化之旅
  • 设计网站推广方案/网络营销策划案范本
  • 万户做网站如何/软件外包公司排名
  • 贡嘎网站建设/站长工具大全
  • 淘客做自己的网站/深圳网站优化公司
  • 农村网站建设必要性/播放量自助下单平台
  • 网站建设最新技术/八戒