如果说 React 是"自由派",那么 Vue 就是"优雅派"。Vue 由华人开发者尤雨溪创建,凭借其简洁的 API 和出色的中文文档,成为国内最受欢迎的前端框架之一。
Vue 是什么?#
Vue(发音同"view")是一款用于构建用户界面的渐进式 JavaScript 框架。2014 年由尤雨溪发布,核心理念是"渐进式"—— 你可以只用它的核心功能,也可以逐步引入更多高级特性。
类比理解#
| 对比项 | React | Vue |
|---|---|---|
| 学习方式 | 需要了解一堆概念才能上手 | 可以只学一点用一点 |
| 就像 | 玩《我的世界》—— 从零开始搭建一切 | 玩乐高—— 有现成的积木和说明书 |
Vue 的"渐进式"意味着:你可以从一个简单的页面开始,然后逐步引入路由、状态管理、构建工具,最终成为一个完整的大型应用。
核心特性#
1. 渐进式架构:按需引入#
Vue 不强迫你一次性学习所有东西。你可以:
- 只用核心库:引入 Vue.js,构建简单页面
- 引入路由:添加 Vue Router,处理页面跳转
- 引入状态管理:添加 Pinia,管理全局状态
- 引入构建工具:使用 Vite,获得更好的开发体验
<!-- 方式一:直接用 CDN,像 jQuery 一样简单 -->
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<!-- 方式二:使用构建工具,专业开发 -->
npm create vue@latest2. 响应式系统:数据驱动视图#
Vue 的响应式系统是其最核心的特性。当你修改数据时,视图会自动更新。
const { createApp, ref } = Vue;
createApp({
setup() {
const message = ref('Hello Vue!');
const changeMessage = () => {
message.value = 'Hello World!'; // 修改数据,视图自动更新
};
return { message, changeMessage };
}
}).mount('#app');类比理解:
响应式就像 Excel 表格—— 当你修改一个单元格的值,所有引用这个单元格的公式都会自动重新计算。
3. 模板语法:直观易读#
Vue 使用类似 HTML 的模板语法,让前端开发者感到非常亲切:
<div id="app">
<!-- 文本插值 -->
<h1>{{ message }}</h1>
<!-- 绑定属性 -->
<img :src="imageUrl" :alt="description">
<!-- 绑定事件 -->
<button @click="handleClick">点击</button>
<!-- 条件渲染 -->
<p v-if="show">显示这段文字</p>
<!-- 列表渲染 -->
<ul>
<li v-for="item in items" :key="item.id">{{ item.name }}</li>
</ul>
</div>| 指令 | 作用 |
|---|---|
{{ }} | 文本插值 |
v-bind: 或 : | 绑定属性 |
v-on: 或 @ | 绑定事件 |
v-if / v-else | 条件渲染 |
v-for | 列表渲染 |
v-model | 双向绑定 |
4. Composition API:组织逻辑的新方式#
Vue 3 引入了 Composition API(组合式 API),让你可以更灵活地组织组件逻辑:
import { ref, computed, onMounted } from 'vue';
export default {
setup() {
// 响应式状态
const count = ref(0);
const doubled = computed(() => count.value * 2);
// 方法
const increment = () => count.value++;
// 生命周期钩子
onMounted(() => {
console.log('组件挂载完成');
});
return { count, doubled, increment };
}
};对比 Options API:
// Options API(Vue 2 风格)
export default {
data() { return { count: 0 } },
methods: { increment() { this.count++ } }
}
// Composition API(Vue 3 风格)
export default {
setup() {
const count = ref(0);
const increment = () => count.value++;
return { count, increment };
}
}Composition API 的优势:
- 逻辑复用:可以将相关代码组织在一起
- 类型支持:更好地支持 TypeScript
- 代码组织:大型组件更易维护
5. 单文件组件:.vue 文件#
Vue 使用 .vue 文件格式,将模板、脚本和样式封装在一个文件中:
<template>
<div class="greeting">
<h1>{{ message }}</h1>
<button @click="greet">打招呼</button>
</div>
</template>
<script setup>
import { ref } from 'vue';
const message = ref('你好,Vue!');
const greet = () => alert(message.value);
</script>
<style scoped>
.greeting h1 {
color: #42b883;
}
</style>为什么 Vue 如此受欢迎?#
1. 上手简单#
Vue 的学习曲线比 React 平缓很多:
- 不需要学习 JSX(虽然也可以用)
- 模板语法直观,像写 HTML
- 中文文档非常完善
- API 设计简洁一致
2. 中文社区活跃#
Vue 在国内拥有庞大的用户群体:
- 官方中文文档质量极高
- 社区教程丰富
- Element Plus、Vuetify 等成熟 UI 库
- 很多国内大厂(阿里、滴滴、字节)都在使用
3. 性能优秀#
Vue 3 使用 Proxy 重写了响应式系统,性能比 Vue 2 提升显著:
| 场景 | Vue 2 | Vue 3 |
|---|---|---|
| 内存占用 | 较高 | 减少约 50% |
| 初始渲染 | - | 提升约 55% |
| 更新性能 | - | 提升约 133% |
4. 渐进式带来的灵活性#
你可以根据项目需求选择使用 Vue 的程度:
- 小项目:直接用 CDN 引入
- 中型项目:引入 Vue Router
- 大型项目:引入 Pinia + Vue Router + TypeScript
适用场景#
| 场景 | 适合程度 | 说明 |
|---|---|---|
| 快速原型开发 | ⭐⭐⭐⭐⭐ | 上手简单,CDN 即可用 |
| 中小型 Web 应用 | ⭐⭐⭐⭐⭐ | 完整生态支持 |
| 企业后台系统 | ⭐⭐⭐⭐⭐ | Element Plus 加持 |
| 移动端 H5 | ⭐⭐⭐⭐ | Vant 组件库 |
| 大型复杂应用 | ⭐⭐⭐⭐ | Vue 3 + Pinia + TypeScript |
学习路线建议#
入门阶段(1 周)#
- 理解 Vue 的响应式系统
- 掌握模板语法(插值、指令、事件)
- 学会使用
ref和reactive - 理解组件的基本用法
进阶阶段(2-3 周)#
- 掌握 Composition API
- 学习 Vue Router
- 学习 Pinia 状态管理
- 理解组件通信(props、emit、provide/inject)
高级阶段(持续学习)#
- TypeScript + Vue
- Vue 3 底层原理
- 性能优化技巧
- SSR(Nuxt.js)
Vue 3 组合式 API 常用函数#
| 函数 | 作用 |
|---|---|
ref | 创建响应式基本类型 |
reactive | 创建响应式对象 |
computed | 创建计算属性 |
watch | 监听数据变化 |
onMounted | 组件挂载后执行 |
provide/inject | 跨层级传递数据 |
与 React 对比#
| 特性 | Vue 3 | React |
|---|---|---|
| 响应式 | 自动代理(Proxy) | 需要手动设置状态 |
| 模板 | HTML 模板(可选 JSX) | JSX(强制) |
| CSS | Scoped CSS | CSS-in-JS / Modules |
| 状态管理 | Pinia(官方推荐) | Redux(社区主导) |
| 上手难度 | ⭐⭐ | ⭐⭐⭐ |
| 灵活性 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
简单来说:
- Vue:约定优先,上手快,中文友好
- React:灵活自由,生态最大,但学习曲线稍陡
总结#
Vue 以其"渐进式"的哲学,让不同阶段的开发者都能找到适合自己的使用方式:
- 简洁的 API—— 让代码易读易写
- 响应式系统—— 数据驱动视图,告别手动 DOM 操作
- 渐进式架构—— 从简单页面到复杂应用,都能hold住
- 中文社区—— 文档完善,问题容易找到答案
无论你是前端新人想入门,还是老兵想换个框架试试,Vue 都是一个非常棒的选择。
下期预告:当 React 遇上服务端渲染,会碰撞出怎样的火花?Next.js 将 React 从前端扩展到全栈,下一篇我们来详细介绍这个"React 全栈框架"。
