vue3新特性与核心技巧
封面图
•
2026-04-09
•
Vue
9
0
0
0
Vue 3 是 Vue.js 框架的最新版本,带来了许多新特性、性能优化和开发体验的提升。以下是一些 **Vue 3 的核心新特性与实用技巧**,帮助你更好地理解和使用它。 --- ## 🧩 一、Vue 3 的核心新特性 ### 1. **Composition API(组合式 API)** - **替代 Options API**:Vue 3 推荐使用 `setup()` 函数来组织代码,而不是 `data()`, `methods` 等。 - **更灵活的逻辑复用**:通过自定义 Hook 和可复用逻辑模块,实现更好的组件组织方式。 - 示例: ```js import { ref } from 'vue'; export default { setup() { const count = ref(0); function increment() { count.value++; } return { count, increment }; } } ``` --- ### 2. **响应式系统(Reactivity System)** - 使用 **Proxy** 替代 `Object.defineProperty`,性能更好,支持数组和对象的深层响应。 - 新增 `reactive` 和 `ref` 两种响应式方式。 - 示例: ```js import { reactive, ref } from 'vue'; const state = reactive({ count: 0 }); const count = ref(0); ``` --- ### 3. **Tree-shaking 支持** - Vue 3 更轻量,只打包你实际使用的功能,适合生产环境优化。 --- ### 4. **更快的渲染速度** - 基于虚拟 DOM 的优化,以及更小的运行时体积,整体性能提升明显。 --- ### 5. **TypeScript 支持更友好** - Vue 3 内部大量使用 TypeScript,提供更好的类型推断和 IDE 支持。 --- ### 6. **新的生命周期钩子** - 一些生命周期钩子名称有所变化,比如: - `beforeCreate` → `setup()` - `created` → `setup()` - `beforeMount` → `onBeforeMount` - `mounted` → `onMounted` - ... - 所有生命周期钩子都以 `on` 开头,统一命名方式。 --- ### 7. **Fragment(碎片)** - 允许组件返回多个根节点,无需包裹一个外层元素。 - 示例: ```js export default { setup() { return () => ( <> <div>第一个元素</div> <div>第二个元素</div> </> ); } } ``` --- ### 8. **Teleport(传送门)** - 将组件内容“传送到”页面中任意位置,常用于模态框、弹窗等场景。 - 示例: ```html <teleport to="#modal"> <div class="modal">这是一个模态框</div> </teleport> ``` --- ### 9. **Suspense(悬停)** - 用于异步加载组件时显示加载状态或错误信息。 - 示例: ```html <suspense> <template #default> <AsyncComponent /> </template> <template #fallback> 加载中... </template> </suspense> ``` --- ## 🔍 二、Vue 3 的核心技巧 ### 1. **使用 `defineProps` 和 `defineEmits`** - 在 `<script setup>` 中直接声明 props 和 emits,无需在 options 中定义。 - 示例: ```vue <script setup> const props = defineProps(['msg']); const emit = defineEmits(['update']); </script> ``` --- ### 2. **使用 `v-model` 处理复杂数据** - Vue 3 的 `v-model` 支持绑定对象、数组等复杂结构。 - 示例: ```vue <input v-model="user.name" /> ``` --- ### 3. **使用 `provide/inject` 实现跨组件通信** - 在大型项目中,可以避免 prop drilling。 - 示例: ```js // 父组件 provide('theme', 'dark'); // 子组件 const theme = inject('theme'); ``` --- ### 4. **使用 `watch` 监听响应式数据** - 与 `computed` 配合使用,实现更复杂的逻辑。 - 示例: ```js import { watch } from 'vue'; watch(count, (newVal) => { console.log('count changed:', newVal); }); ``` --- ### 5. **使用 `useRouter` 和 `useRoute` 进行路由管理** - 在 Vue 3 + Vue Router 4 中,使用 `useRouter()` 和 `useRoute()` 获取路由信息。 - 示例: ```js import { useRouter } from 'vue-router'; const router = useRouter(); router.push('/about'); ``` --- ### 6. **使用 `defineAsyncComponent` 异步加载组件** - 提升首屏加载性能。 - 示例: ```js const AsyncComp = defineAsyncComponent(() => import('./components/AsyncComponent.vue') ); ``` --- ### 7. **使用 `unref` 简化对 `ref` 的访问** - 可以直接获取 `ref` 的值,而不用 `.value`。 - 示例: ```js import { unref } from 'vue'; const value = unref(refValue); ``` --- ## ✅ 三、推荐学习资源 - [Vue 3 官方文档](https://vuejs.org/guide/introduction.html) - [Vue 3 Composition API 文档](https://vuejs.org/api/composition-api-introduction.html) - [Vue 3 深入浅出(掘金、知乎、CSDN)](https://juejin.cn/) - [Vue 3 项目实战教程](https://www.bilibili.com/) --- 如果你是刚从 Vue 2 过渡到 Vue 3,建议先掌握 **Composition API** 和 **响应式系统**,然后逐步深入其他高级特性和最佳实践。 需要我帮你写一个 Vue 3 项目结构示例或者某个具体功能的实现吗?欢迎继续提问!
上一篇:
javascript es6 新特性与核心技巧
下一篇:
javascript es7 新特性
标题录入,一次不能超过6条
留言
评论