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

做网站的群html5网站正在建设中模板下载

做网站的群,html5网站正在建设中模板下载,网站301重定向 权重转移,网站建设原创在 Vue 3 中调用子组件方法与 Vue 2 有显著差异,这源于 Vue 3 底层架构的革新。 一、核心差异对比表特性Vue 2Vue 3组件实例获取this.$refs.childRefchildRef.value方法暴露方式自动暴露所有方法需手动使用 defineExpose 暴露响应式系统Object.definePropertyProxyC…

在 Vue 3 中调用子组件方法与 Vue 2 有显著差异,这源于 Vue 3 底层架构的革新。

一、核心差异对比表

特性Vue 2Vue 3
组件实例获取this.$refs.childRefchildRef.value
方法暴露方式自动暴露所有方法需手动使用 defineExpose 暴露
响应式系统Object.definePropertyProxy
Composition API核心架构
类型支持弱类型强类型支持

二、具体实现方式对比

1. Vue 2 实现方式(Options API)
<!-- 父组件 -->
<template><ChildComponent ref="childRef" /><button @click="callChild">调用子组件方法</button>
</template><script>
export default {methods: {callChild() {// 直接通过 $refs 访问子组件实例this.$refs.childRef.childMethod('参数');}}
}
</script><!-- 子组件 -->
<script>
export default {methods: {childMethod(param) {console.log('子组件方法被调用', param);}}
}
</script>
2. Vue 3 实现方式(Composition API + <script setup>
<script setup lang="ts">
import HelloWorld from "./components/HelloWorld.vue";
import {onMounted, ref} from "vue";const helloWorldRef = ref(null)
onMounted(()=>{helloWorldRef.value?.printLog()
})
</script><template><HelloWorld ref="helloWorldRef"></HelloWorld>
</template><!-- 子组件 HelloWorld.vue -->
<script setup lang="ts">
// 必须显式暴露方法
const printLog = () => {console.log('Hello World ===')
}
// 关键!暴露方法给父组件
defineExpose({printLog
})
</script><template><h1>Hello World</h1>
</template>

三、架构差异的本质原因

1. 响应式系统重构(Proxy vs Object.defineProperty)

Vue 3 使用 Proxy 实现响应式:

  • 封装性增强:Proxy 要求明确暴露接口
  • 性能优化:避免 Vue 2 中递归遍历所有属性
  • 安全控制:防止父组件意外修改子组件内部状态
2. 模块化与 Tree-shaking
  • 未暴露的方法不会进入父组件作用域
  • 减少不必要的代码关联
  • 提升应用可维护性

四、原理级差异总结

维度Vue 2Vue 3优势
组件模型类实例模型函数作用域模型更好的 Tree-shaking
访问控制开放所有方法白名单暴露机制增强封装性
响应式追踪全实例追踪精准依赖追踪减少不必要的渲染
内存占用组件实例较大轻量级代理提升大型应用性能
TS 支持类型推导困难精准类型推断开发体验提升

💡 架构演进本质:从 “组件即对象” (OOP) 到 “组件即函数” (FP) 的范式转变,体现了现代前端框架向函数式、组合式、类型安全方向的发展趋势。

这种设计变化虽然增加了显式暴露的步骤,但带来了更好的封装性、类型安全性和长期可维护性,是 Vue 框架走向成熟的重要标志。

http://www.dtcms.com/a/515323.html

相关文章:

  • 常平众展做网站长沙网上房地产官网
  • 在 Linux 中实现虚拟机管理程序级行为分析
  • Jmeter请求发送加密参数详解
  • STM32G474单片机开发入门(二十二)SHT30温湿度传感器模块实战
  • 【开题答辩实录分享】以《智能垃圾回收小程序》为例进行答辩实录分享
  • FSMC-灵活的静态存储控制器
  • 开源AI大模型AI智能名片S2B2C商城小程序在护肤品文案痛点表达中的应用与效果研究
  • 《3D端游云原生协作任务数据一致性优化实战》
  • Day8C语言前期阶段练习算法之插入排序
  • 计算机算法性能详解
  • 建设银行租房网站6网站建设的用例图
  • 国外黄冈网站推广软件有哪些网站建设销售员工作内容
  • Java 大视界 -- Java 大数据在智能医疗远程护理与患者健康管理中的应用与前景
  • 江苏省义务教育标准化建设网站北京住房和城乡建设局门户网站
  • 记2025羊城杯部分题目的解题思路
  • 198种组合算法+优化RF随机森林+SHAP分析+新数据预测!机器学习可解释分析,强烈安利,粉丝必备!
  • 2025第二十二届中国国际半导体博览会(IC CHINA 2025)亮点分析!
  • 「PPG信号处理——(1)基于多模态融合与智能决策的PPG运动伪影分层去除方法」2025年10月22日
  • 阿瓦隆A15 166T:如何突破SHA-256算法的瓶颈?
  • 【Qt开发】多元素类控件(三)-> QTreeWidget
  • MOSHELL (11) : MOSHELL 中的UNIX
  • 安洵杯2019
  • 离线环境下运行 Docker 容器编排指南
  • mapbox进阶,地图添加渐变背景色
  • Tornado + Motor 微服务架构(Docker + 测试 + Kubernetes)
  • YLOLv4
  • 实验室入门——ubuntu20.04安装ros和ros2全流程
  • uTools 最新版优化macOS 26 高 GPU 占用问题
  • wordpress如何建站拓普建站推广
  • 建筑智库免费网站商城网站开发报