Vue 3 概览与生态升级
🎯 引言
学会这篇文章,我能了解 Vue 3 相较于 Vue 2 的核心区别和优势,掌握最新的全局 API 用法,学会用当前主流的 Vite 快速搭建 Vue 3 项目,并理解项目目录结构和热更新机制,助力你快速进入现代前端开发节奏。
✨ 为什么要学习 Vue3
Vue 3 作为 Vue.js 的全新大版本,带来了许多性能优化和全新的 API,成为现代前端开发的热门选择。学习 Vue 3 不仅能帮助你写更高效、可维护的代码,还能用上 Composition API 等强大工具,拆分组件逻辑,提升代码复用率。
此外,Vue 3 对 TypeScript 的支持更好,也适配了新的打包工具如 Vite,使得开发体验更加顺畅。未来的新项目和主流开源库都将围绕 Vue 3 生态展开,掌握它是前端工程师的必备技能。
🔄 与 Vue 2 的主要区别
Vue 3 相比 Vue 2 有不少变革,核心区别可以归纳为以下几块:
- 性能提升
Vue 3 的响应式系统重写,使用 Proxy 代替 Object.defineProperty,提升了性能和兼容性。启动和更新速度更快,内存占用更少。 - Composition API
这是 Vue 3 最大的亮点之一。相较于 Vue 2 的 Options API,Composition API 提供了更灵活的逻辑复用方式,类似 React Hooks,方便组织复杂组件逻辑。 - 更好的 TypeScript 支持
Vue 3 从设计层面支持 TypeScript,类型推断更精准,使用 TS 写 Vue 变得轻松自然。 - 全局 API 改变
Vue 3 中原来的Vue.component、Vue.use等全局注册方式改为通过创建应用实例来操作,更符合现代模块化开发。 - 内置组件和指令的调整
如v-model支持多个绑定,Teleport用于传送组件到指定 DOM 等新特性。 - Tree Shaking 优化
Vue 3 支持按需引入,不使用的代码不会被打包进最终产物,减小体积。
🌐 全局 API 变更
Vue 3 的全局 API 设计做了调整,不再像 Vue 2 那样直接挂载在 Vue 构造函数上,而是通过 createApp 工厂函数返回应用实例。
举个简单例子,Vue 2 注册全局组件是这样:
Vue.component('MyComp', {
template: '<div>我是全局组件</div>',
});
而 Vue 3 变成了:
import { createApp } from 'vue';
import App from './App.vue';
import MyComp from './MyComp.vue';
const app = createApp(App);
app.component('MyComp', MyComp);
app.mount('#app');
这里你可以看到,createApp 创建了一个应用实例,所有全局 API 都在这个实例上操作。
另外,Vue 3 不再有 Vue.use,取而代之的是手动调用插件的 install 方法,或者通过 app.use() 注册插件。
还有一个重要变化是全局配置的修改,现在通过 app.config 来操作,比如:
app.config.globalProperties.$http = axios;
给所有组件注入 $http。
🚀 创建 Vue 3 项目(Vite 为主,CLI 简要提及)
目前 Vue 3 推荐使用 Vite 作为项目搭建工具,因为 Vite 启动快、热更新体验好,基于原生 ES 模块,极大提升开发效率。
创建 Vue 3 + Vite 项目只需一条命令:
npm create vite@latest my-vue3-app
cd my-vue3-app
npm install
npm run dev
命令解析:
npm create vite@latest:快速使用最新版本 Vite 脚手架。npm run dev:启动开发服务器,支持热更新。
Vue CLI 创建 Vue 3 项目(简要)
Vue CLI 也支持 Vue 3,不过启动和构建速度不如 Vite。创建命令:
vue create my-vue3-app
选择 Vue 3 版本即可,但推荐用 Vite 作为新项目首选。
📁 目录结构 & 热更新机制
以 Vite 创建的 Vue 3 项目为例,目录结构大致是:
my-vue3-app/
├─ public/ // 静态资源,直接拷贝到打包目录
├─ src/
│ ├─ assets/ // 图片、字体等资源文件
│ ├─ components/ // 组件文件夹
│ ├─ App.vue // 根组件
│ ├─ main.js // 入口文件,初始化 Vue 应用
├─ index.html // 入口 HTML 文件
├─ package.json // 项目信息和依赖
├─ vite.config.js // Vite 配置文件
热更新机制(HMR)
Vue + Vite 组合的热更新机制基于浏览器的 ES 模块热替换(HMR)。当你修改单个组件文件时,Vite 只会把更新的模块推送给浏览器,浏览器替换相应的模块,不会刷新整个页面。
这就保证了应用状态不会丢失,开发体验极佳。
举例,修改 src/components/HelloWorld.vue 中的模板内容,浏览器会立即反映变化,而不刷新页面。
🧾 小节总结
- Vue 3 引入了 Composition API 和 Proxy 响应式系统,性能和灵活性大幅提升。
- 全局 API 从
Vue构造函数转移到应用实例app,更现代化。 - 推荐使用 Vite 快速搭建 Vue 3 项目,享受极速启动和热更新体验。
❓ 知识问答(Q&A)
Q:Vue 3 为什么要用 Proxy 替代 Object.defineProperty?
A:Proxy 能更全面地监听对象变化,性能更好,处理嵌套对象更优雅,且代码更简洁。
Q:Vite 和 Vue CLI 有什么区别?
A:Vite 启动更快,热更新效率高,基于原生 ES 模块,体验更现代;而 Vue CLI 依赖 Webpack,配置复杂,启动慢。
Q:Composition API 相比 Options API 有什么优势?
A:它把逻辑按功能组合在一起,代码复用方便,组件逻辑拆分更清晰,适合大型复杂项目。
🧪 小练习
练习1
尝试自己搭建一个基于 Vite 的 Vue3 项目,前期可以选择 JavaScript 语言进行过渡。
🎉 恭喜你已经掌握 Vue 3 核心区别、全局 API 用法、Vite 项目搭建和热更新机制技能啦!期待你用新技能打造出色的现代前端应用!
