Vue 高级开发:状态管理、路由系统、插件与登录权限控制
一、组件通信方式回顾Vue 组件之间可以通过多种方式通信父传子使用props子传父使用$emit父组件需要命令式操作子组件时可以使用$refs。数据层级较深、多个页面共同使用的数据则更适合交给 Vuex 或 Pinia 管理。二、混入 mixin混入用于抽取多个组件重复的选项例如相同的data、方法和生命周期逻辑。组件引入混入后混入对象会与组件自身的选项合并如果发生同名冲突组件自身的选项优先生命周期钩子则会依次执行。// src/mixins/userMixin.jsexportdefault{data(){return{userName:访客}},methods:{resetUserName(){this.userName访客}}}script import userMixin from /mixins/userMixin export default { name: ProfileView, mixins: [userMixin] } /script也可以在main.js中使用Vue.mixin()注册全局混入但全局混入会影响每个组件容易产生隐式依赖和命名冲突。除非是非常通用的逻辑否则优先使用局部混入或组合式工具函数。三、Vue 插件插件用于给 Vue 增加全局能力例如注册组件、注册自定义指令、添加原型方法或混入公共逻辑。插件本质上通常是包含install(Vue, options)方法的对象调用Vue.use(plugin)时 Vue 会自动执行它。// src/plugins/http.jsimportaxiosfromaxiosconsthttpaxios.create({baseURL:http://127.0.0.1:8000,timeout:5000})exportdefault{install(Vue){// Vue 2 中通过原型提供 this.$http。Vue.prototype.$httphttp}}// main.jsimportVuefromvueimportAppfrom./App.vueimporthttpPluginfrom/plugins/httpVue.use(httpPlugin)newVue({render:hh(App)}).$mount(#app)组件中可以通过this.$http.get(...)使用插件提供的能力。自定义指令也可以在插件中注册Vue.directive(focus,{inserted(element){element.focus()}})第三方库如 Vue Router、Vuex 和 Element UI 也都是通过Vue.use()接入。插件注册的全局能力应使用$前缀命名以减少与组件数据和方法冲突的可能。四、插槽回顾默认插槽和具名插槽可以让父组件向子组件注入内容。子组件控制整体布局父组件提供标题、正文或按钮等变化内容这种方式适合卡片、弹窗和布局组件。!-- AboutView.vue -- template ContentCard template slotheaderh2关于页面/h2/template p这里是父组件传入的正文。/p template slotfooterbutton确定/button/template /ContentCard /template!-- ContentCard.vueVue 2 写法 -- template section classcard headerslot nameheader默认标题/slot/header mainslot默认内容/slot/main footerslot namefooter/slot/footer /section /template五、Vuex 状态管理Vuex 是 Vue 2 项目常用的集中式状态管理工具。它把多个组件共享的数据放在 store 中通过明确的mutations修改状态通过actions处理异步操作或业务流程。Vue 3 项目也可以使用 Vuex但新项目通常优先考虑 Pinia。1. 创建 store// src/store/index.jsimportVuefromvueimportVuexfromvuexVue.use(Vuex)exportdefaultnewVuex.Store({state:{count:100},getters:{doubleCount(state){returnstate.count*2}},mutations:{add(state,amount){state.countamount}},actions:{addCount({state,commit},amount){if(state.countamount105)returncommit(add,amount)}}})state保存共享数据getters负责派生数据mutations是同步修改状态的唯一推荐入口actions可以包含异步逻辑并通过commit提交 mutation。不要在组件中直接修改this.$store.state否则状态变化很难追踪。2. 在入口注册 store// main.jsimportVuefromvueimportAppfrom./App.vueimportstorefrom./storenewVue({store,render:hh(App)}).$mount(#app)3. 组件中使用template div p数量{{ $store.state.count }}/p p两倍数量{{ $store.getters.doubleCount }}/p button clickincrease增加/button /div /template script export default { methods: { increase() { this.$store.dispatch(addCount, 1) } } } /script小型项目不必把所有变量都放入 Vuex。只有跨多个页面或多个组件共享、且需要统一修改规则的状态才适合集中管理。六、本地存储浏览器常见的存储方式有三种Cookie 可设置过期时间并会随请求发送sessionStorage只在当前标签页会话中有效localStorage会长期保存除非主动删除或清理站点数据。三者都不适合保存密码等高敏感信息。localStorage和sessionStorage只能保存字符串数组或对象需要先序列化constuser{name:lqz,age:19}localStorage.setItem(user,JSON.stringify(user))constsavedUserJSON.parse(localStorage.getItem(user)||{})sessionStorage.setItem(draft,临时内容)sessionStorage.removeItem(draft)localStorage.removeItem(user)封装存储方法可以统一处理 JSON 和异常exportfunctionsetStorage(key,value){localStorage.setItem(key,JSON.stringify(value))}exportfunctiongetStorage(key,fallbacknull){constvaluelocalStorage.getItem(key)if(valuenull)returnfallbacktry{returnJSON.parse(value)}catch{returnvalue}}登录 token 的保存方式要结合安全策略选择。localStorage使用简单但 XSS 可能读取其中的 tokenHttpOnly Cookie 能降低脚本读取风险但需要配合 CSRF 防护。不要把“永久保存”误认为“安全保存”。七、Vue Router 基础Vue Router 负责把 URL 映射到页面组件。router-view是页面组件的显示位置router-link是声明式导航组件this.$router用于 JavaScript 跳转this.$route表示当前路由信息。1. 安装和配置# Vue 2 对应 Vue Router 3npminstallvue-router3// src/router/index.jsimportVuefromvueimportVueRouterfromvue-routerimportHomeViewfrom/views/HomeView.vueimportAboutViewfrom/views/AboutView.vueVue.use(VueRouter)exportdefaultnewVueRouter({mode:history,routes:[{path:/,name:home,component:HomeView},{path:/about,name:about,component:AboutView}]})!-- App.vue -- template div idapp router-link to/首页/router-link router-link to/about关于/router-link router-view / /div /template入口文件需要把 router 注入根实例importrouterfrom./routernewVue({router,render:hh(App)}).$mount(#app)2. 路由跳转与参数查询参数适合筛选、分页等可选信息路径参数适合表示资源标识。查询参数不会改变路由匹配组件路径参数通常写在路由路径中。// JavaScript 跳转this.$router.push({name:about,query:{name:张三,age:19}})this.$router.push({name:user,params:{id:10}})// 路由配置路径参数{path:/user/:id,name:user,component:UserView}// UserView.vue 中读取constidthis.$route.params.idconstnamethis.$route.query.namepush会新增浏览历史replace会替换当前记录back()和go(-1)可以返回上一页。路由参数来自地址栏不应直接当作权限依据敏感操作仍需后端认证。八、嵌套路由后台管理页面通常共享顶部和侧边栏只替换右侧内容这时可以使用嵌套路由。父组件必须放置router-view子路由才有渲染位置。constroutes[{path:/backend,component:()import(/views/BackendView.vue),children:[{path:,component:()import(/views/backend/IndexView.vue)},{path:orders,component:()import(/views/backend/OrderView.vue)},{path:goods,component:()import(/views/backend/GoodsView.vue)}]}]!-- BackendView.vue -- template div classbackend aside router-link to/backend首页/router-link router-link to/backend/orders订单/router-link router-link to/backend/goods商品/router-link /aside mainrouter-view //main /div /template九、路由守卫与登录保护路由守卫在页面跳转前执行可以检查 token、用户角色或权限。守卫只负责前端导航体验真正的接口权限必须由后端再次校验。router.beforeEach((to,from,next){constrequiresAuthto.matched.some(recordrecord.meta.requiresAuth)consttokenlocalStorage.getItem(access)if(requiresAuth!token){next({name:login,query:{redirect:to.fullPath}})}elseif(to.namelogintoken){next({name:home})}else{next()}})需要保护的路由通过meta标记{path:/backend,component:BackendView,meta:{requiresAuth:true}}登录成功后可以读取redirect查询参数返回用户原本要访问的页面但应限制跳转为本站路径避免开放重定向。十、Hash 与 History 模式Hash 模式使用 URL 中#后的内容表示前端路由例如/#/about。浏览器不会把 hash 发送给服务器因此部署简单、兼容性好但地址不够简洁。History 模式使用正常路径例如/about地址更美观但刷新页面时服务器必须将未知路径回退到index.html否则会出现 404。选择模式时要同时考虑前端需求和后端部署配置。十一、总结与练习Vuex 适合管理跨组件、跨页面的共享状态状态修改应通过 mutation/action 进行。localStorage、sessionStorage和 Cookie 的生命周期不同保存 token 时要结合 XSS、CSRF 和过期策略。Vue Router 通过router-view渲染页面使用 query 或 params 携带路由参数。嵌套路由适合后台布局路由守卫可以改善登录跳转但不能替代后端权限校验。建议实现一个带登录保护的后台管理页面登录后进入嵌套路由刷新仍能恢复 token退出后所有受保护路由都跳回登录页。

相关新闻

ImHex:能“读懂“二进制的现代化十六进制编辑器

ImHex:能“读懂“二进制的现代化十六进制编辑器

ImHex:能"读懂"二进制的现代化十六进制编辑器面向逆向工程与文件格式分析的十六进制编辑器,支持 Pattern 语言解析结构、反汇编、YARA 规则和丰富的内置工具。📖 背景说明 ImHex 是一款现代化的十六进制编辑器,由 WerWo…

2026/8/26 18:16:53 阅读更多 →
室内设计师一般去哪里找 3D 模型?常用渠道与避坑建议

室内设计师一般去哪里找 3D 模型?常用渠道与避坑建议

室内设计师一般去哪里找 3D 模型?常用渠道与避坑建议 做室内效果图、全屋定制、工装方案时,3D 模型往往决定了建模效率。 很多设计师刚开始会自己建柜体、灯具、沙发、装饰品,但实际项目时间紧,重复建模成本很高。更常见的做法是&…

2026/8/26 18:16:53 阅读更多 →
电机模块注意事项

电机模块注意事项

一、TIM3_PWM_Init1.硬件模块介绍TB6612 电机驱动模块 VM 最高电压最好不超过 10V。高于 10V 时,刚上电会有比较高的脉冲电压,这样容易击穿 16V 的钽电容。因为淘宝很多商家的钽电容的耐压值都是 16V 的,因为成本原因,耐压值 25V …

2026/8/26 18:15:52 阅读更多 →

最新新闻

使用Masscan扫描器进行信息搜集

使用Masscan扫描器进行信息搜集

Masscan 是一款极为高效的端口扫描工具,以其卓越的扫描速度和大规模扫描能力而著称。该工具不仅支持 TCP 和 UDP 协议的扫描,还允许用户根据需求灵活指定多个目标和端口。Masscan 通过采用先进的网络性能优化技术,充分利用操作系统的资源和多…

2026/8/26 20:24:52 阅读更多 →
Wri.pe的Markdown编辑体验为何如此顺滑?工具栏、预览与快捷键详解

Wri.pe的Markdown编辑体验为何如此顺滑?工具栏、预览与快捷键详解

Wri.pe的Markdown编辑体验为何如此顺滑?工具栏、预览与快捷键详解 【免费下载链接】open-wripe https://wri.pe source code 项目地址: https://gitcode.com/gh_mirrors/op/open-wripe Wri.pe 是一款开源的在线 Markdown 笔记工具,核心卖点就是极…

2026/8/26 20:24:52 阅读更多 →
如何用Spotless规范Android项目代码风格:PhotoAffix完整教程

如何用Spotless规范Android项目代码风格:PhotoAffix完整教程

如何用Spotless规范Android项目代码风格:PhotoAffix完整教程 【免费下载链接】photo-affix 📷 Stitch your photos together vertically or horizontally easily! 项目地址: https://gitcode.com/gh_mirrors/ph/photo-affix PhotoAffix 是一款开源…

2026/8/26 20:24:52 阅读更多 →
SwiftyTimer 完整 API 参考指南:从 Timer.after 到 new(every:) 的全部方法详解与示例

SwiftyTimer 完整 API 参考指南:从 Timer.after 到 new(every:) 的全部方法详解与示例

SwiftyTimer 完整 API 参考指南:从 Timer.after 到 new(every:) 的全部方法详解与示例 【免费下载链接】SwiftyTimer Swifty API for NSTimer 项目地址: https://gitcode.com/gh_mirrors/sw/SwiftyTimer SwiftyTimer 是一款轻量级的 Swift 计时器工具库&…

2026/8/26 20:24:52 阅读更多 →
2026 Embedding 向量嵌入:AI 靠什么“看懂“你的话?MonkeyCode 免费上手

2026 Embedding 向量嵌入:AI 靠什么“看懂“你的话?MonkeyCode 免费上手

2026 Embedding 向量嵌入:AI 靠什么"看懂"你的话?产品经理小陈被老板一句话问住了:“AI 客服明明接上了咱们 2 万条 FAQ,为什么用户问"退款几天到账”,它却答非所问?"问题出在——匹配…

2026/8/26 20:24:52 阅读更多 →
Postman接口测试(断言、关联、参数化、输出测试报告)

Postman接口测试(断言、关联、参数化、输出测试报告)

基本界面展示Get、Post请求Postman断言使用postman来判断预期结果与实际结果是否一致响应状态码断言响应包含字符串断言判断字符串的格式关联用于解决http请求之间存在依赖关系依赖:一个http请求的响应结果中的数据,被另一个请求使用登录 http请求&#…

2026/8/26 20:23:52 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段,转入了政务服务的常态化落地应用;在实际使用过程中,它能自主理解办事需求、辅助完成填报申报、开展材料预审,并联动多个系统协同作业,真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/26 14:45:33 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/26 17:46:43 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 14:46:37 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/26 17:46:39 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →