当前位置: 首页 > news >正文

Vue2 学习笔记系列:从 Vue Router 路由到 Vuex 状态管理

Vue2 学习笔记系列:从 Vue Router 路由到 Vuex 状态管理

Vue2 项目里绕不开的两块:路由(Vue Router)管页面跳转,状态管理(Vuex)管跨组件数据共享。本文把最常用、最容易混的知识点串一遍,配可复制的代码。

一、Vue Router 路由

1.1 基本配置

import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '@/views/Home.vue'
import About from '@/views/About.vue'Vue.use(VueRouter)const routes = [{ path: '/', name: 'Home', component: Home },{ path: '/about', name: 'About', component: About }
]const router = new VueRouter({mode: 'history',   // 去掉 URL 里的 #routes
})export default router

1.2 嵌套路由

const routes = [{path: '/user',component: UserLayout,children: [{ path: '', component: UserProfile },      // /user{ path: 'posts', component: UserPosts }    // /user/posts]}
]

1.3 路由守卫(权限控制核心)

router.beforeEach((to, from, next) => {const loggedIn = store.getters.isLoggedInif (to.meta.requiresAuth && !loggedIn) {next('/login')            // 未登录跳登录页} else {next()                    // 放行}
})

二、Vuex 状态管理

当多个组件需要共享同一份数据(如用户信息、购物车),props/emit 层层传递会很痛苦,这时上 Vuex。

2.1 四大核心概念

概念 作用 是否可直接改
state 唯一数据源(类似 data)
getters 派生状态(类似 computed)
mutations 同步修改 state 的唯一途径 是(必须)
actions 处理异步,再提交 mutation

2.2 一个完整 store

import Vue from 'vue'
import Vuex from 'vuex'Vue.use(Vuex)export default new Vuex.Store({state: {count: 0,user: null},getters: {doubleCount: state => state.count * 2,isLoggedIn: state => !!state.user},mutations: {INCREMENT(state, n = 1) {state.count += n},SET_USER(state, user) {state.user = user}},actions: {// 异步场景(如接口请求)放在 actionasync login({ commit }, payload) {const user = await api.login(payload)commit('SET_USER', user)}}
})

2.3 组件里怎么用

// 读状态
this.$store.state.count
this.$store.getters.doubleCount// 派发 action(异步)
this.$store.dispatch('login', { username, password })// 提交 mutation(同步)
this.$store.commit('INCREMENT', 2)

配合 mapState / mapGetters / mapActions 语法糖,组件代码更简洁:

import { mapState, mapActions } from 'vuex'
export default {computed: { ...mapState(['count']), ...mapGetters(['doubleCount']) },methods: { ...mapActions(['login']) }
}

三、路由 + Vuex 配合的典型场景

登录流程就是两者协作的经典案例:

  1. 路由守卫拦截需鉴权页面 → 未登录跳 /login
  2. 登录页提交 → dispatch('login') 调接口;
  3. action 拿到用户信息 → commit('SET_USER') 写入 state;
  4. 守卫再次判断 getters.isLoggedIn 为 true → 放行。

四、小结

  • Vue Router 负责「去哪」,核心是路由表配置、嵌套路由和 beforeEach 守卫;
  • Vuex 负责「共享什么」,严格遵循 action(异步) → mutation(同步改) → state 的单向数据流;
  • 两者结合,就能撑起一个带权限、带全局状态的真实前端应用。

参考资料

  • Vue2 官方文档(Vue Router / Vuex)
  • 个人学习笔记整理
http://www.jsqmd.com/news/1397286/

相关文章:

  • CentOS 8上MySQL 8.0.22安装配置与性能调优实战指南
  • 奇点大会后,技术领导怎么带团队穿越AI hype周期
  • 兰州管道疏通附近快修|本地管道堵死、返臭、冻堵原因及专业解决方法 - 信息分享
  • 吉安市门窗定制工厂怎么选?源头工厂选购指南,避开门窗定制那些坑 - 收录优先
  • 正式审核员注册流程众智商学院怎么走? - 众智商学院职业教育
  • 灵活用工数字化合规运营与SaaS系统选型参考报告
  • 电脑桌面整理工具,一键自动分类
  • GEO优化公司怎么选?从品牌监控、内容协同和服务边界看
  • Kimi API黑产倒卖技术解析与Python合规接入指南
  • AI Agent技能系统:模块化设计与Python实现指南
  • 长期认知资产模型:食品品牌如何建立可复用选择判断系统
  • 大模型应用开发实战:LangChain输出解析器解决AI结果结构化难题
  • 2026推荐西安高性价比楼盘开发商,荣民壹号凭何稳居高新置业主流视野 - 装修教育财税推荐2026
  • 零成本PotPlayer实时字幕翻译指南:5步让外语影片字幕自动变中文
  • Google三篇论文如何奠定大数据基石:GFS、MapReduce与BigTable解析
  • 代码比较工具全解析:从Git Diff到IDE与协作平台实战指南
  • 结构智能文明:基于公理推导的认知、智慧与文明统一理论—— 第十二至十二章:从认知结构到文明方程的哲学与技术统一论
  • React Native移动端测试实战:从静态分析到构建验证的完整质量保障体系
  • 开发者注意力管理:从工程化视角优化编程效率与深度工作
  • 把 OData 请求拆到最小颗粒度,SAP Gateway Client 的调试方法与实战思路
  • 南明区民办高中的具体位置都在哪里? - 企业推荐官
  • TIEBO世界编程语言排行榜2026年8月版本
  • Maven保姆级安装配置指南:从零搭建高效Java开发环境
  • GEO优化是不是发文章?企业做AI搜索可见度前要先看边界
  • Meta开源Muse Glimmer模型实战:从本地部署到API服务集成
  • 元初混沌体系架构 第二卷 第五十六篇 鸿蒙黑障等离子体场信号穿透公理
  • 合肥本土考公机构推荐:2026年安徽考生备考指南与机构评估标准 - 大学规划师
  • 如何使用 Python 在 Excel 中实现行列互换(转置)
  • AI Agent 幻觉根治思路:从模型层、记忆层、规划层三层降噪设计
  • 闰年判断:从历法原理到多语言代码实现的完整指南