Vue 2.0 详解全教程(含 Axios 封装 + 路由守卫 + 实战进阶)
目录
- 一、Vue 2.0 简介
- 1.1 什么是 Vue?
- 1.2 Vue 2.x 的主要特性
- 二、快速上手
- 2.1 引入 Vue
- 2.2 创建第一个 Vue 实例
- 三、核心概念详解
- 3.1 模板语法
- 3.2 数据绑定
- 3.3 事件绑定
- 3.4 计算属性 & 侦听器
- 四、组件系统
- 4.1 定义全局组件
- 4.2 单文件组件(*.vue 文件)
- 4.3 父子组件通信
- 五、指令系统
- 六、生命周期钩子
- 七、过渡 & 动画
- 八、Vue Router 路由系统
- 8.1 安装
- 8.2 配置路由
- 九、Vuex 状态管理
- 9.1 安装
- 9.2 基本使用
- 十、Axios 网络请求
- 10.1 安装
- 10.2 基础使用
- 十一、进阶实战:Axios 封装
- 11.1 封装 http.js
- 11.2 使用封装
- 十二、进阶实战:路由守卫
- 12.1 添加守卫
- 12.2 路由配置示例
- 十三、进阶实战:统一 API 管理
- 13.1 封装 api.js
- 13.2 使用
- 十四、实战示例:TodoList
- 14.1 基本结构
- 14.2 Vue 逻辑
- 十五、功能拓展(含代码实现)
- 15.1 自定义指令
- 15.2 自定义过滤器
- 15.3 使用 Vue.extend 动态组件
- 十六、优化与最佳实践
- 十七、总结
一、Vue 2.0 简介
1.1 什么是 Vue?
Vue 是一款轻量、渐进式的 JavaScript 框架,用于构建用户界面。它专注于视图层,易于上手,也支持复杂的单页应用开发。
1.2 Vue 2.x 的主要特性
- 响应式数据绑定
- 组件化开发
- 指令系统
- 生命周期钩子
- 计算属性 & 侦听器
- 内置过渡 & 动画支持
- 强大的插件生态
二、快速上手
2.1 引入 Vue
<!-- CDN 引入 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
2.2 创建第一个 Vue 实例
<div id="app"><h1>{{ message }}</h1>
</div><script>new Vue({el: '#app',data: {message: 'Hello Vue 2!'}});
</script>
三、核心概念详解
3.1 模板语法
- 插值:{{ message }}
- 属性绑定::href=“url”
- 条件渲染:v-if / v-else / v-show
- 列表渲染:v-for
3.2 数据绑定
<div>{{ message }}</div>
<input v-model="message">
3.3 事件绑定
<button v-on:click="greet">点击</button><script>
methods: {greet() {alert('Hello Vue!');}
}
</script>
3.4 计算属性 & 侦听器
<p>反转消息: {{ reversedMessage }}</p><script>
computed: {reversedMessage() {return this.message.split('').reverse().join('');}
}
</script>
四、组件系统
4.1 定义全局组件
Vue.component('my-component', {template: '<div>这是一个组件</div>'
});
4.2 单文件组件(*.vue 文件)
结构:
<template><div>{{ message }}</div>
</template><script>
export default {data() {return {message: '单文件组件'};}
}
</script><style scoped>
div { color: blue; }
</style>
4.3 父子组件通信
- props 传值
<child :message="parentMsg"></child><script>
props: ['message']
</script>
- $emit 事件派发
<child @custom-event="parentMethod"></child><script>
// 子组件
this.$emit('custom-event', data);
</script>
五、指令系统
指令 | 作用 |
---|---|
v-bind | 动态绑定属性 |
v-model | 双向数据绑定 |
v-if | 条件渲染 |
v-show | 条件显示(不销毁 DOM) |
v-for | 列表循环 |
v-on | 绑定事件监听器 |
v-html | 输出 HTML 内容 |
v-cloak | 防止闪烁 |
六、生命周期钩子
钩子名 | 触发时机 |
---|---|
beforeCreate | 实例初始化后,数据观测和事件配置之前 |
created | 实例创建完成,数据观测和事件配置之后 |
beforeMount | 挂载开始之前 |
mounted | 挂载完成之后 |
beforeUpdate | 数据更新前 |
updated | 数据更新后 |
beforeDestroy | 实例销毁前 |
destroyed | 实例销毁后 |
七、过渡 & 动画
<transition name="fade"><p v-if="show">淡入淡出效果</p>
</transition><style>
.fade-enter-active, .fade-leave-active {transition: opacity .5s;
}
.fade-enter, .fade-leave-to {opacity: 0;
}
</style>
八、Vue Router 路由系统
8.1 安装
npm install vue-router
8.2 配置路由
import Vue from 'vue';
import VueRouter from 'vue-router';
import Home from './Home.vue';
import About from './About.vue';Vue.use(VueRouter);const routes = [{ path: '/', component: Home },{ path: '/about', component: About }
];const router = new VueRouter({routes
});new Vue({router
}).$mount('#app');
九、Vuex 状态管理
9.1 安装
npm install vuex
9.2 基本使用
import Vue from 'vue';
import Vuex from 'vuex';Vue.use(Vuex);const store = new Vuex.Store({state: {count: 0},mutations: {increment(state) {state.count++;}}
});new Vue({store
});
十、Axios 网络请求
10.1 安装
npm install axios
10.2 基础使用
import axios from 'axios';axios.get('https://api.example.com/data').then(response => {console.log(response.data);});
十一、进阶实战:Axios 封装
在项目中,推荐将 Axios 封装为独立模块,方便管理接口、处理全局错误等。
11.1 封装 http.js
// src/utils/http.js
import axios from 'axios';const service = axios.create({baseURL: 'https://api.example.com',timeout: 5000
});// 请求拦截器
service.interceptors.request.use(config => {// 可在这里统一携带 token// config.headers.Authorization = `Bearer ${localStorage.getItem('token')}`;return config;
}, error => {return Promise.reject(error);
});// 响应拦截器
service.interceptors.response.use(response => {return response.data;
}, error => {console.error('请求出错:', error);alert(error.response?.data?.message || '请求失败');return Promise.reject(error);
});export default service;
11.2 使用封装
import http from '@/utils/http';http.get('/users').then(data => {console.log('用户数据:', data);});
十二、进阶实战:路由守卫
Vue Router 支持全局、单个路由、组件内守卫,可用于权限控制。
12.1 添加守卫
// router/index.js
router.beforeEach((to, from, next) => {const isLoggedIn = !!localStorage.getItem('token');if (to.meta.requiresAuth && !isLoggedIn) {next('/login');} else {next();}
});
12.2 路由配置示例
{path: '/dashboard',component: Dashboard,meta: { requiresAuth: true }
}
十三、进阶实战:统一 API 管理
推荐将接口集中管理,避免硬编码。
13.1 封装 api.js
// src/api/user.js
import http from '@/utils/http';export function getUserList() {return http.get('/users');
}export function login(data) {return http.post('/login', data);
}
13.2 使用
import { getUserList } from '@/api/user';getUserList().then(list => {console.log('用户列表:', list);
});
十四、实战示例:TodoList
14.1 基本结构
<div id="app"><input v-model="newTodo" @keyup.enter="addTodo"><ul><li v-for="todo in todos">{{ todo.text }}<button @click="removeTodo(todo)">删除</button></li></ul>
</div>
14.2 Vue 逻辑
new Vue({el: '#app',data: {newTodo: '',todos: []},methods: {addTodo() {if (this.newTodo.trim()) {this.todos.push({ text: this.newTodo });this.newTodo = '';}},removeTodo(todo) {this.todos = this.todos.filter(t => t !== todo);}}
});
十五、功能拓展(含代码实现)
15.1 自定义指令
Vue.directive('focus', {inserted(el) {el.focus();}
});
15.2 自定义过滤器
Vue.filter('capitalize', function (value) {if (!value) return '';return value.charAt(0).toUpperCase() + value.slice(1);
});
15.3 使用 Vue.extend 动态组件
const Profile = Vue.extend({template: '<p>这是动态创建的组件</p>'
});new Profile().$mount('#profile');
十六、优化与最佳实践
- 组件划分要清晰,职责单一
- 使用 v-show 替代 v-if,减少频繁销毁创建
- 慎用 v-html 防止 XSS
- 利用 keep-alive 缓存组件
- 结合 Vue Devtools 调试
十七、总结
Vue 2.0 是构建现代 Web 应用的强大工具。通过本篇文章,你掌握了从基础到进阶的 Vue 2 知识体系,并通过实际案例加深了理解。继续深入组件化开发、状态管理、性能优化,你就能在实际项目中游刃有余地使用 Vue 2!🚀
到这里,这篇文章就和大家说再见啦!我的主页里还藏着很多 篇 前端 实战干货,感兴趣的话可以点击头像看看,说不定能找到你需要的解决方案~
创作这篇内容花了很多的功夫。如果它帮你解决了问题,或者带来了启发,欢迎:
点个赞❤️ 让更多人看到优质内容
关注「前端极客探险家」🚀 每周解锁新技巧
收藏文章⭐️ 方便随时查阅
📢 特别提醒:
转载请注明原文链接,商业合作请私信联系
感谢你的阅读!我们下篇文章再见~ 💕
相关文章:

Vue 2.0 详解全教程(含 Axios 封装 + 路由守卫 + 实战进阶)
目录 一、Vue 2.0 简介1.1 什么是 Vue?1.2 Vue 2.x 的主要特性 二、快速上手2.1 引入 Vue2.2 创建第一个 Vue 实例 三、核心概念详解3.1 模板语法3.2 数据绑定3.3 事件绑定3.4 计算属性 & 侦听器 四、组件系统4.1 定义全局组件4.2 单文件组件(*.vue …...
Kotlin空安全解决Android NPE问题
在 Android 开发中,NullPointerException(NPE)一直是最常见的崩溃类型之一。Kotlin 通过创新的空安全机制,在语言层面彻底解决了这一问题。以下是 Kotlin 空安全的核心要点和实战指南: 一、Kotlin 空安全设计哲学 编译期防御:通过类型系统强制区分可空(?)与非空类型显…...

依赖关系-根据依赖关系求候选码
关系模式R(U, F), U{},F是R的函数依赖集,可以将属性分为4类: L: 仅出现在依赖集F左侧的属性 R: 仅出现在依赖集F右侧的属性 LR: 在依赖集F左右侧都出现的属性 NLR: 在依赖集F左右侧都未出现的属性 结论1: 若X是L类…...
【强化学习】动态规划(Dynamic Programming, DP)算法
1、动态规划算法解题 LeetCode 931. 下降路径最小和 给你一个 n x n 的 方形 整数数组 matrix ,请你找出并返回通过 matrix 的下降路径 的 最小和 。 下降路径 可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选…...

uniapp-商城-47-后台 分类数据的生成(通过数据)
在第46章节中,我们为后台数据创建了分类的数据表结构schema,使得可以通过后台添加数据并保存,同时使用云函数进行数据库数据的读取。文章详细介绍了如何通过前端代码实现分类管理功能,包括获取数据、添加、更新和删除分类。主要代…...

java-----------------多态
多态,当前指的是 java 所呈现出来的一个对象 多态 定义 多态是指同一个行为具有多个不同表现形式或形态的能力。在面向对象编程中,多态通过方法重载和方法重写来实现。 强弱类型语言 javascript 或者python 是弱类型语言 C 语言,或者 C…...

【文档智能】开源的阅读顺序(Layoutreader)模型使用指南
一年前,笔者基于开源了一个阅读顺序模型(《【文档智能】符合人类阅读顺序的文档模型-LayoutReader及非官方权重开源》), PDF解析并结构化技术路线方案及思路,文档智能专栏 阅读顺序检测旨在捕获人类读者能够自然理解的…...
Java中的内部类详解
目录 什么是内部类? 生活中的内部类例子 为什么需要内部类? 生活中的例子 内部类的存在意义 内部类的分类 1. 成员内部类 什么是成员内部类? 成员内部类的特点 如何使用成员内部类? 成员内部类访问外部类同名成员 2. …...
Java大师成长计划之第16天:高级并发工具类
📢 友情提示: 本文由银河易创AI(https://ai.eaigx.com)平台gpt-4o-mini模型辅助创作完成,旨在提供灵感参考与技术分享,文中关键数据、代码与结论建议通过官方渠道验证。 在现代Java应用中,处理并…...
lambda 表达式
C 的 lambda 表达式 是一种轻量、内联的函数对象写法,广泛用于标准算法、自定义回调、事件响应等场景。它简洁且强大。以下将系统、详细地讲解 lambda 的语法、捕获规则、应用技巧和实际使用场景。 🧠 一、基本语法 [捕获列表](参数列表) -> 返回类型…...

Edu教育邮箱申请2025年5月
各位好,这里是aigc创意人竹相左边 如你所见,这里是第3部分 现在是选择大学的学科专业 选专业的时候记得考虑一下当前的时间日期。 比如现在是夏天,所以你选秋天入学是合理的。...
JVM内存模型深度解剖:分代策略、元空间与GC调优实战
堆 堆是Java虚拟机(JVM)内存管理的核心区域,其物理存储可能分散于不同内存页,但逻辑上被视为连续的线性空间。作为JVM启动时创建的第一个内存区域,堆承载着几乎所有的对象实例和数组对象(极少数通过逃逸分…...

STM32-TIM定时中断(6)
目录 一、TIM介绍 1、TIM简介 2、定时器类型 3、基本定时器 4、通用定时器 5、定时中断基本结构 6、时基单元的时序 (1)预分频器时序 (2)计数器时序 7、RCC时钟树 二、定时器输出比较功能(PWM) …...
微信小程序地图缩放scale隐性bug
bug1 在真机环境下通过this.mapCtx.getScale获取当前地图的缩放等级带小数, 当设置scale带小数时,地图会先执行到缩放到带小数的缩放等级,然后会再次缩放取整的缩放等级(具体向上取整还是向下取整未知,两种情况都观察…...
window 显示驱动开发-配置内存段类型
视频内存管理器(VidMm)和显示硬件仅支持某些类型的内存段。 因此,内核模式显示微型端口驱动程序(KMD)只能配置这些类型的段。 KMD 可以配置内存空间段和光圈空间段,其中不同: 内存空间段由保存…...

Modbus RTU 详解 + FreeMODBUS移植(附项目源码)
文章目录 前言一、Modbus RTU1.1 通信方式1.2 模式特点1.3 数据模型1.4 常用功能码说明1.5 异常响应码1.6 通信帧格式1.6.1 示例一:读取保持寄存器(功能码 0x03)1.6.2 示例二:写单个线圈(功能码 0x05)1.6.3…...

对称加密算法(AES、ChaCha20和SM4)Python实现——密码学基础(Python出现No module named “Crypto” 解决方案)
文章目录 一、对称加密算法基础1.1 对称加密算法的基本原理1.2 对称加密的主要工作模式 二、AES加密算法详解2.1 AES基本介绍2.2 AES加密过程2.3 Python中实现AES加密Python出现No module named “Crypto” 解决方案 2.4 AES的安全考量 三、ChaCha20加密算法3.1 ChaCha20基本介…...
JWT原理及工作流程详解
JSON Web Token(JWT)是一种开放标准(RFC 7519),用于在各方之间安全传输信息。其核心原理是通过结构化、签名或加密的JSON对象实现无状态身份验证和授权。以下是JWT的工作原理和关键组成部分: 1. JWT结构 J…...

【软件设计师:存储】16.计算机存储系统
一、主存储器 存储器是计算机系统中的记忆设备,用来存放程序和数据。 计算机中全部信息,包括输入的原始数据、计算机程序、中间运 行结果和最终运行结果都保存在存储器中。 存储器分为: 寄存器Cache(高速缓冲存储器)主存储器辅存储器一、存储器的存取方式 二、存储器的性…...
【Part 2安卓原生360°VR播放器开发实战】第三节|实现VR视频播放与时间轴同步控制
《VR 360全景视频开发》专栏 将带你深入探索从全景视频制作到Unity眼镜端应用开发的全流程技术。专栏内容涵盖安卓原生VR播放器开发、Unity VR视频渲染与手势交互、360全景视频制作与优化,以及高分辨率视频性能优化等实战技巧。 📝 希望通过这个专栏&am…...

WebRTC通信原理与流程
1、服务器与协议相关 1.1 STUN服务器 图1.1.1 STUN服务器在通信中的位置图 1.1.1 STUN服务简介 STUN(Session Traversal Utilities for NAT,NAT会话穿越应用程序)是一种网络协议,它允许位于NAT(或多重 NAT)…...

Java版ERP管理系统源码(springboot+VUE+Uniapp)
ERP系统是企业资源计划(Enterprise Resource Planning)系统的缩写,它是一种集成的软件解决方案,用于协调和管理企业内各种关键业务流程和功能,如财务、供应链、生产、人力资源等。它的目标是帮助企业实现资源的高效利用…...

Redis总结(六)redis持久化
本文将简单介绍redis持久化的两种方式 redis提供了两种不同级别的持久化方式: RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储.AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保…...
使用FastAPI微服务在AWS EKS中构建上下文增强型AI问答系统
系统概述 本文介绍如何使用FastAPI在AWS Elastic Kubernetes Service (EKS)上构建一个由多个微服务组成的AI问答系统。该系统能够接收用户输入的提示(prompt),通过调用其他微服务从AWS ElastiCache on Redis和Amazon DynamoDB获取相关上下文,然后利用AW…...

PMIC电源管理模块的PCB设计
目录 PMU模块简介 PMU的PCB设计 PMU模块简介 PMIC(电源管理集成电路)是现代电子设备的核心模块,负责高效协调多路电源的转换、分配与监控。它通过集成DC-DC降压/升压、LDO线性稳压、电池充电管理、功耗状态切换等功能,替代传统分…...
正大视角下的结构交易节奏:如何借助数据捕捉关键转折
正大视角下的结构交易节奏:如何借助数据捕捉关键转折 在日常的交易结构研究中,节奏与分型常常被误解为“预测工具”,实则更应作为状态识别的参考。正大团队在模型演化过程中提出了“节奏-结构对齐”的分析方式,通过数据驱动来判断…...

华为云Flexus+DeepSeek征文|DeepSeek-V3商用服务开通教程
目录 DeepSeek-V3/R1商用服务开通使用感受 DeepSeek-V3/R1商用服务开通 1、首先需要访问ModelArts Studio_MaaS_大模型即服务_华为云 2、在网站右上角登陆自己的华为云账号,如果没有华为云账号的话,则需要自己先注册一个。 3、接着点击ModelArts Stu…...
STM32F103RC中ADC1和ADC2通道复用
以下是STM32F103RC中ADC1和ADC2通道复用的示意图及文字说明,帮助直观理解这种共享关系: ADC1/ADC2引脚复用示意图 GPIO引脚 ADC1通道 ADC2通道 ┌─────────┐ ┌─────────┐ ┌─────────┐ │ PA0 ├─…...

Qt—鼠标移动事件的趣味小程序:会移动的按钮
1.项目目标 本次根据Qt的鼠标移动事件实现一个趣味小程序:当鼠标移动到按钮时,按钮就会随机出现在置,以至于根本点击不到按钮。 2.项目步骤 首先现在ui界面设计控件(也可以用代码的方式创建,就不多说了) 第一个按钮不需…...

鞋样设计软件
Sxy 64鞋样设计软件是一款专业级鞋类设计工具 专为鞋业设计师与制鞋企业开发 该软件提供全面的鞋样设计功能 包括二维开版 三维建模 放码排料等核心模块 支持从草图构思到成品输出的完整设计流程 内置丰富的鞋型数据库与部件库 可快速生成各种鞋款模板 软件采用智能放码技术 精…...