vue2集成vuex实现网站统一数据管理

news2024/10/6 1:59:17

文章目录

  • 前言
  • 安装配置过程
    • 1、安装vuex依赖
    • 2、在src目录下创建store文件夹,创建模块
      • site.js
      • getters.js
      • index.js
    • 3、在man.js中添加vuex
  • vuex实战:存储与获取网站基础数据
    • 何时去存储数据?(路由前置获取数据)
    • 如何取数据?(vuex注册方法取)
  • 资料获取

前言

博主介绍:✌目前全网粉丝3W+,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Java后端技术领域。

涵盖技术内容:Java后端、大数据、算法、分布式微服务、中间件、前端、运维等。

博主所有博客文件目录索引:博客目录索引(持续更新)

视频平台:b站-Coder长路


安装配置过程

1、安装vuex依赖

npm i vuex@3

2、在src目录下创建store文件夹,创建模块

image-20240815012702637

site.js

site.js:目前实现的是网站基础数据中两个网站logo、团队名称字段的全局存储。

import { querySiteConfig } from '@/api/openSiteApi'
import { MY_CONSTANT } from '@/utils/constants';

const site = {
  state: {
    teamLogo: '',
    teamTitle: ''
  },

  mutations: {
    SET_TEAM_LOGO: (state, teamLogo) => {
      // 对应index.html中去除图标
      const link = document.querySelector("link[rel*='icon']") || document.createElement('link')
      link.type = 'image/x-icon'
      link.rel = 'shortcut icon'
      link.href = teamLogo
      document.getElementsByTagName('head')[0].appendChild(link)
      state.teamLogo = teamLogo
    },
    SET_TEAM_TITLE: (state, teamTitle) => {
      document.getElementsByTagName('title')[0].innerText = teamTitle + '后台管理系统'
      state.teamTitle = teamTitle
    }
  },

  actions: {
    getSiteBasicConfig({ commit }) {
      // console.log('MY_CONSTANT=>', MY_CONSTANT)
      const siteConfigParms =  {
        configKey: MY_CONSTANT.siteConfigKeys.SITE_BASICCONFIG.configKey
      }
      return new Promise((resolve, reject) => {
        querySiteConfig(siteConfigParms).then(res => {
          console.log('querySiteConfig=>', querySiteConfig)
          const configValue = res.data.configValue
          commit('SET_TEAM_LOGO', configValue.teamLogo)
          commit('SET_TEAM_TITLE', configValue.teamTitle)
          resolve()
        }).catch(error => {
          reject(error)
        })
      })
    }
  }
}

export default site

getters.js

getters.js :

const getters = {
  teamLogo:state => state.site.teamLogo,
  teamTitle:state => state.site.teamTitle
}
export default getters

index.js

index.js:

import Vue from 'vue'
import Vuex from 'vuex'
import site from './modules/site'
import getters from './getters'

Vue.use(Vuex)

const store = new Vuex.Store({
  modules: {
    site 
  },
  getters
})

export default store

3、在man.js中添加vuex

import store from './store'

// 添加上store
new Vue({
  el: '#app',
  router,
  store,
  render: h => h(App)
})

vuex实战:存储与获取网站基础数据

何时去存储数据?(路由前置获取数据)

由于网站基础数据是全局层面的,目前将网站基础数据获取放在路由层面:

1、创建一个permission.js:给router设置前置事件

image-20240815121813445

import router from './router'
import store from './store'  //引入vuex

router.beforeEach((to, from, next) => {
  console.log('router.beforeEach')
  // 获取网站基础配置信息
  store.dispatch('getSiteBasicConfig')
  next()
})

说明:此时会指派给vuex中的site.js中的相应的全局函数,最终去把指定的数据提交给vuex进行管理。

2、引入permission.js到main.js中

image-20240815122023791

引入下即可:实际就是让router注册前置事件生效

// 权限控制
import './permission' 

如何取数据?(vuex注册方法取)

1、对于网站的logo以及title标题动态设置,哪个部分设置值?

实际上在vuex中的site.js部分的commit函数方法里我们去做的更新处理。

image-20240815122306389

2、对于进入后台管理系统的侧边栏以及登录首页的团队名称如何动态取值?

1⃣️侧边栏部分

image-20240815122358771

image-20240815122511305

<img v-if="logo" :src="teamLogo" class="sidebar-logo" />
<h1 v-else class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor }">{{ teamTitle }} 系统</h1>

computed: {
  teamLogo() {
    return this.$store.state.site.teamLogo
  },
  teamTitle() {
    return this.$store.state.site.teamTitle
  }
},

说明:比较简单实用的是computed来进行动态计算,然后实时更新。

2、登录页面的团队名称

image-20240815122631006

image-20240815122711330

也比较简单,使用computed来进行计算,然后在页面上直接绑定该属性即可。

<h4 class="mb-4 pb-3"><span v-html="teamTitle"/> 登录</h4>

// 计算属性,会监听依赖属性值随之变化
computed: {
  teamTitle() {
    return this.$store.state.site.teamTitle
  }
},


资料获取

大家点赞、收藏、关注、评论啦~

精彩专栏推荐订阅:在下方专栏👇🏻

  • 长路-文章目录汇总(算法、后端Java、前端、运维技术导航):博主所有博客导航索引汇总
  • 开源项目Studio-Vue—校园工作室管理系统(含前后台,SpringBoot+Vue):博主个人独立项目,包含详细部署上线视频,已开源
  • 学习与生活-专栏:可以了解博主的学习历程
  • 算法专栏:算法收录

更多博客与资料可查看👇🏻获取联系方式👇🏻,🍅文末获取开发资源及更多资源博客获取🍅

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2190933.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

windows中下载、安装、配置JDK/JDK环境配置/Java配置环境变量/Linux中安装配置JDK环境

JDK下载(官网)、安装、配置(包括系统、idea、eclipse)一篇就够了 1、问题概述? Java开发者必须掌握的JDK下载、安装、配置过程。 包括在Eclipse及IDEA中的配置使用 2、下载JDK 【注册Oracle官网账号】 下载的前天是注册orcle官网账号,作为开发者,这个必须有,随时关注…

RTX4060安装nvidia显卡驱动

文章目录 nvidia drivers下载删除原有nvidia驱动安装nvidia驱动如果报错Unable to find the kernel source tree for the currently runningbuilding kernel modules解决方法 报错成功安装!!! nvidia drivers下载 https://www.nvidia.cn/geforce/drivers/#:~:textNVIDIA%20GeF…

ESP01 AT指令学习

一 、AT指令 测试指令&#xff1a;ATCWMODE? 参数及取值范围 cwmode&#xff08;1-3&#xff09; 查询指令&#xff1a; ATCWMODE&#xff1f; 当前cwmode的取值 3 设置指令&#xff1a; ATCWMODE3 设置当前的cwmode为 3 1、station 模式 连接到其他wifi 2、softA…

【源码+文档】基于SpringBoot+Vue的酒店管理系统

&#x1f6a9;如何选题&#xff1f; 如何选题、让题目的难度在可控范围&#xff0c;以及如何在选题过程以及整个毕设过程中如何与老师沟通&#xff0c;这些问题是需要大家在选题前需要考虑的&#xff0c;具体的方法我会在文末详细为你解答。 &#x1f6ad;如何快速熟悉一个项目…

如何从 Windows 照片库恢复已删除的照片

数据丢失的主要原因之一是人为错误。更糟糕的是&#xff0c;回收站中没有备份或删除的文件。在这种情况下&#xff0c;数据恢复或适用于 Windows 的专用图片恢复工具可以为您提供帮助&#xff0c;因为它们可以帮助恢复已删除的图片。 牢记这一点&#xff0c;我们将讨论从 Wind…

基于SSM的电影院订票系统设计与实现

文未可获取一份本项目的java源码和数据库参考。 开展本课题的意义及工作内容&#xff1a; 1.意义 系统管理也都将通过计算机进行整体智能化操作&#xff0c;对于电影院订票系统系统所牵扯的管理及数据保存都是非常多的&#xff0c;例如电影信息管理、订单管理等&#xff0c;…

04-SpringBootWeb案例(中)

3. 员工管理 完成了部门管理的功能开发之后&#xff0c;我们进入到下一环节员工管理功能的开发。 基于以上原型&#xff0c;我们可以把员工管理功能分为&#xff1a; 分页查询&#xff08;今天完成&#xff09;带条件的分页查询&#xff08;今天完成&#xff09;删除员工&am…

压摆率(Slew Rate)

1. 定义 压摆率&#xff08;Slew Rate&#xff09;也叫转换速率&#xff0c;是指运算放大器输出电压的最大变化速率&#xff0c;单位通常为伏特每微秒&#xff08;V/s&#xff09;。 如果输入信号的变化速率超过运算放大器的压摆率&#xff0c;输出信号将不能即时跟随输入信号…

多线程编程实例

代码&#xff1a; #include<stdio.h> #include<pthread.h> static int run-1; static int retvalue; void *start_routine(void *arg) {int *running arg;printf("child Thread initial over,pass in parameters:%d\n",*running);while(*running){print…

Prometheus与Grafana的完美结合:打造强大的监控与可视化平台

目录 一、Prometheus简介 1.1、Prometheus基本介绍 1.2、Prometheus监控原理 1.3、Prometheus 的局限性 二、部署Prometheus 2.1、使用apt或者yum安装 2.2、基于官方提供的二进制文件安装 2.3、基于docker镜像直接启动或通过docker-compose编排 2.4、基于Operator部署在Kuberne…

使用TensorBoard可视化模型

目录 TensorBoard简介 神经网络模型 可视化 轮次-损失曲线 轮次-准确率曲线 轮次-学习率曲线 迭代-评估准确率曲线 迭代-评估损失曲线 TensorBoard简介 TensorBoard是一款出色的交互式的模型可视化工具。安装TensorFlow时,会自动安装TensorBoard。如图: TensorFlow可…

TI 毫米波雷达——ADC Buffer的交错与非交错采样

TI 毫米波雷达——ADC Buffer的交错与非交错采样 写在前面ADC Buffer 数据存储形式交错采样 (Interleaved mode)1. 4 Rx 通道存储形式2. 3 Rx 通道存储形式3. 2 Rx 通道存储形式 —— RX0/RX1 Enable only4. 1 Rx 通道存储形式 —— RX0 Enable only 非交错采样 (Non-Interleav…

C++:STL常用算法随笔

主要的头文件#include <algorithm> < functional> <numeric> 遍历算法&#xff1a; for_each、transform(搬运容器到另一个容器中 ) void print1(int val) {cout << val <<" "; } for_each (v.begin(),v.end() , print1) 或者用仿…

NVIDIA网卡系列之ConnectX-6 DX规格信息(200G-PCIe 4.0x16-8PF1000VF-2019年发布)

背景 NVIDIA ConnectX-6是最大支持200G的产品&#xff0c;有DX LX等系列。LX一般是25G比较便宜。 核心关键点 200GbpsPCIe 4.0&#xff0c;最大lane: x16 (4.0的lane速 16GT/s * 16 256T/s&#xff0c;所以支持的是200G的网卡用PCIe4.0)QSFPPF&#xff0c;VF数量&#xff1…

Linux 传输层UDP

文章目录 一、再谈端口号查看知名端口号和网站的强关联信息&#xff1f;一个进程是否可以bind多个端口号&#xff1f;一个端口号是否可以被多个进程bind&#xff1f;理解进程和端口的关系&#xff1f; 二、UDP协议协议格式16位源端口号&#xff1a;16位目的端口号&#xff1a;1…

双指针:滑动窗口

题目描述 给定两个字符串 S 和 T&#xff0c;求 S 中包含 T 所有字符的最短连续子字符串的长度&#xff0c;同时要求时间复杂度不得超过 O(n)。 输入输出样例 输入是两个字符串 S 和 T&#xff0c;输出是一个 S 字符串的子串。样例如下&#xff1a; 在这个样例中&#xff0c…

计算机网络:物理层 —— 物理层下的传输媒体

文章目录 传输媒体导向性媒体同轴电缆双绞线光纤光纤分类中心波长光纤规格光纤的优缺点 非导向性媒体ISM 频段无线电波微波激光红外线可见光 传输媒体 传输媒体是计算机网络设备之间的物理通路&#xff0c;也称为传输介质或传输媒介&#xff0c;并不包含在计算机网络体系结构中…

408笔记|随笔记录|自用|2

文章目录 cache和TLB查找总结 接上篇选择题 打开同一个文件共享同一个内存索引结点 cache和TLB cache由SRAM组成&#xff0c;TLB通常由相联存储器组成&#xff0c;可以由SRAM组成。 DRAM需要不断刷新&#xff0c;性能比较低。 TLB缺失可以由软件或者硬件处理&#xff0c;cac…

JC系列CAN通信说明

目录 一、CAN协议二、指令格式三、通信接线3.1、一对一通信3.2、组网通信 四、寄存器定义五、指令说明4、读取电源电压5、读取母线电流6、读取实时速度8、读取实时位置10、读取驱动器温度11、读取电机温度12、读取错误信息32、设定电流33、设定速度35、设定绝对位置37、设定相对…

Java-进阶二

ArrayList的源代码分析&#xff08;扩容原理&#xff09; 1 使用空参构造的集合&#xff0c;在底层创建一个容量为0的数组。2 添加第一个元素时&#xff0c;底层会扩容创建一个容量为10的数组。3 存满时会扩容1.5倍。4 如果一次添加多个元素&#xff0c;1.5倍还放不下&#xff…