vue3 基础功能总结

本文详细介绍了在Vue3中如何使用props进行父组件向子组件传递参数,通过emits进行事件通讯,以及如何实现ref进行双向数据绑定和生命周期管理,包括挂载前、销毁前的钩子以及深度监听数据变化。
<script setup>

import { ref , defineProps , defineEmits , onBeforeMount , onBeforeUnmount , watch} from 'vue'


//父组件传参接收方式同vue2

//子组件接收方法

const props = defineProps(["showPassword"])



//子组件发送方式

const emit = defineEmits(['changePassword'])
const close=()=>{
        show.value=false
        emit('changePassword',1)
        //1关闭 2成功
}



//实现双向绑定使用ref

const show=ref(props.showPassword)



//挂载前的生命周期

onBeforeMount(()=>{

})



//销毁前的生命周期

onBeforeUnmount(()=>{

})



//数据监听

const from=ref({ name:'',})
const stopWatch = watch(from, (newValue, oldValue) => {
        console.log(newValue, oldValue)
},{deep: true})

// 加上{deep: true}则修改from中的name属性也会触发监听


//路由跳转

import {useRoute, useRouter} from "vue-router";
const route=useRoute() //获取路由参数
const router=useRouter() //路由跳转

//push方法:
//作用:将新的路由添加到导航历史记录中。
//效果:在导航过程中,会向应用程序的历史记录中添加新的路由,从而可以通过后退按钮回到之前的路由。新的路由将成为历史记录中的当前活动路由。
//示例代码:router.push('/new-route')
// replace方法:

//作用:用新的路由替换当前的活动路由。
//效果:在导航过程中,会将当前的活动路由替换为新的路由,并且不会在历史记录中创建额外的记录。这意/味着无法通过后退按钮返回到之前的路由。
//示例代码:router.replace('/new-route')




</script>

<think>好的,我现在要帮用户总结Vue3的核心概念与关键特性。首先,我需要回想一下用户提供的参考引用,看看有没有可以直接利用的信息。用户给了三个引用,其中引用[1]提到掌握Vue.js核心概念是关键,引用[2]提到了Virtual DOM、render functions和三个核心模块,引用[3]则讨论了事件处理机制和一些基础知识点。不过用户的问题是关于Vue3的关键特性、用法和最佳实践,可能需要更具体的Vue3内容,比如Composition API、性能改进等。 首先,我应该从Vue3的主要新特性入手。记得Vue3引入了Composition API,这是一个很大的变化,相比Options API更灵活。需要详细说明它的优势,比如更好的逻辑复用和代码组织。然后,性能优化方面,Vue3通过Proxy实现响应式,相比Vue2的Object.defineProperty,能更好地处理数组和对象的变化,同时减少了打包体积。另外,Tree-shaking的支持也是关键,用户只打包用到的功能,减小文件大小。 接下来是Teleport组件,这个功能允许将子组件渲染到DOM中的其他位置,对模态框或通知非常有用。Suspense组件处理异步依赖的加载状态,提升用户体验。Fragment和多个根节点的支持,让组件结构更灵活,不需要包裹多余的div。 然后是按需引入和模块化,Vue3的模块化设计让开发者可以根据需要引入功能,减少最终打包体积。响应式系统的优化,比如更高效的依赖追踪和批量更新,提升性能。TypeScript的支持也是Vue3的重点,源码用TS重写,提供更好的类型推断。 在用法和最佳实践方面,需要建议用户如何组织代码,比如使用Composition API的逻辑复用,如何利用新的生命周期钩子,结合TypeScript的类型系统,以及性能优化的策略,比如懒加载组件和使用Vite构建工具。 还要注意用户提到的引用内容,虽然有些是关于Vue2或基础概念的,但需要确保回答符合Vue3的特性。例如,引用[3]提到的事件处理机制在Vue3中依然适用,但可能有新的修饰符或语法。不过用户主要关心的是Vue3的新特性和核心概念,所以重点应该放在这些方面。 可能需要检查是否有遗漏的关键特性,比如自定义渲染器、全局API的修改(如createApp),或者单文件组件中的变化,比如v-model的更新、片段支持等。同时,组合式函数(Composables)作为最佳实践的一部分,应该提到,比如如何封装可复用的逻辑。 最后,生成相关问题时要围绕Vue3的特性和使用,比如Composition API的优势、响应式原理的变化、性能优化方法、与Vue2的主要区别等。确保问题能够引导用户进一步深入学习Vue3的相关知识。</think>### Vue3 核心概念与关键特性总结 #### 一、核心概念 1. **响应式系统** Vue3 使用 `Proxy` 替代 Vue2 的 `Object.defineProperty`,支持动态添加响应式属性,并优化了对数组和嵌套对象的监听效率[^2]。 - 示例代码: ```javascript import { reactive } from &#39;vue&#39;; const state = reactive({ count: 0 }); // 响应式对象 ``` 2. **组合式 API (Composition API)** 通过 `setup()` 函数实现逻辑复用和代码组织,替代 Vue2 的 Options API,支持更灵活的逻辑拆分与组合[^1][^3]。 - 示例: ```javascript import { ref, computed } from &#39;vue&#39;; export default { setup() { const count = ref(0); const double = computed(() => count.value * 2); return { count, double }; } } ``` 3. **虚拟 DOM 优化** Vue3 通过静态标记(Patch Flag)和树结构扁平化(Tree Flattening)减少 diff 算法复杂度,提升渲染性能。 --- #### 二、关键特性 1. **性能提升** - 打包体积减少 41%(核心库仅 10KB) - 初始渲染速度提升 55%,更新性能提升 133%。 2. **Tree-shaking 支持** 按需引入功能模块(如 `v-model`、`transition`),未使用的 API 不会被打包到最终产物中。 3. **Teleport 组件** 将子组件渲染到 DOM 中的任意位置(如全局弹窗): ```html <teleport to="#modal-container"> <div class="modal">内容</div> </teleport> ``` 4. **Fragment 支持** 组件支持多根节点,无需强制包裹 `<div>`: ```html <template> <header></header> <main></main> <footer></footer> </template> ``` 5. **Suspense 组件** 处理异步组件加载状态: ```html <Suspense> <template #default><AsyncComponent /></template> <template #fallback>加载中...</template> </Suspense> ``` --- #### 三、最佳实践 1. **逻辑复用** 使用 Composition API 封装可复用的逻辑(如 `useFetch`): ```javascript // useFetch.js import { ref } from &#39;vue&#39;; export function useFetch(url) { const data = ref(null); const fetchData = async () => { data.value = await fetch(url).then(res => res.json()); }; return { data, fetchData }; } ``` 2. **TypeScript 集成** Vue3 源码使用 TypeScript 重写,提供完善的类型支持: ```typescript interface User { id: number; name: string; } const user = ref<User>({ id: 1, name: &#39;Alice&#39; }); ``` 3. **性能优化建议** - 使用 `v-memo` 缓存静态节点 - 懒加载组件:`defineAsyncComponent` - 优先选择 `Vite` 作为构建工具 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值