Vue-4
自定义创建项目
目标:基于 VueCli 自定义创建项目架子
大致步骤:
- 安装脚手架
- 创建项目
vue create 项目名称 - 选择自定义
选择 Manually select features 这一项
step-1:按下空格 : 选择/取消--勾选请选择:Babel、Router、CSS、Linterstep-2:
关于 history 模式:不选择启用step-3:选择启用 Lessstep-4:选择使用"无分号规范"——ESLint + Standard configstep-5:选择 Lint on savestep-6:选择"In dedicated config files" 将配置文件放在单独文件中step-7:Save this as a preset for future projects? (选择 no)
ESlint 代码规范
代码规范:一套写代码的约定规则
规范的作用:正规的团队需要统一的编码风格
JavaScript Standard Style 规范说明:https://standardjs.com/rules-zhcn.html
代码不规范的解决方案:
- 手动修正:根据命令行的语法报错提示去修改
- 自动修正:借助 vscode 插件 ESLint 高亮错误,并通过一些配置,实现自动帮助我们修复错误
认识 vuex
介绍
vuex 是一个 vue 的状态管理工具(插件),状态就是数据,它可以帮助我们管理 vue 通用的数据(多组件共享的数据)
场景
多个组件共同维护一份数据(购物车)
优势
- 共同维护一份数据,数据集中化管理
- 响应式变化
- 操作简洁(vuex 提供了一些辅助函数)
其他
state 仓库,用来存放数据
mutations 修改,用来修改数据
actions 异步,用力管理异步
getters 获取,用来筛选结果
state
// 这里面存放的就是vuex相关的核心代码
import Vue from 'vue'
import Vuex from 'vuex'// 插件安装
Vue.use(Vuex)// 创建仓库
const store = new Vuex.store({// 通过 state 可以提供数据(所有组件共享这一份数据)state: {title: '大标题',count: 100}
})// 导出给main.js使用
export default store
import Vue from 'vue'
import App from './App.vue'
import store from '@store/index'Vue.config.productionTip = falsenew Vue({render: h => h(App),store
}).$mount('#app')
<template><div>{{ $store.state.title }}</div>
</template>
mutations
import Vue from 'vue'
import Vuex from 'vuex'Vue.use(Vuex)// 创建仓库
const store = new Vuex.store({// 严格模式(有利于初学者,检测不规范的代码)strict:true,// 1. 通过 state 可以提供数据state: {title: '大标题',count: 100}// 2. 通过 mutations 可以提供修改数据的方法mutations: {// 所有 mutation 函数,第一个参数,都是 stateaddCount (state, n) {// 修改数据state.count += n},changeTitle (state) {state.title = '临时标题'}}
})// 导出给main.js使用
export default store
<template><div><button @click="handleAdd(1)">值 + 1</button><button @click="handleAdd(5)">值 + 5</button><button @click="handleTitle">改变标题</button></div>
</template><script>export default {name: 'test',methods: {handleAdd (n) {this.$store.commit('addCount', n)},handleTitle () {this.$store.commit('changeTitle')}}}
</script>
mapMutations
mutations: {subCount (state, n) {state.count -= n}
}
import mapMutations from 'vuex'methods: {subCount (n) {this.$store.commit('subCount', n)}
}// 上面的代码等价于下面的methods: {...mapMutaions(['subCount'])
}
this.subCount(10) // 调用
actions
mutations: {changeCount (state, newCount) {state.count = newCount}
}
action: {setAsyncCount(context, res) {// 这里是用setTimeout模拟异步,以后大部分场景是"发送请求"setTimeout(() => {context.commit('changeCount', res)}, 1000)}
}
this.$store.dispatch('setAsyncCount', 200)
mapActions
actions: {changeCountAction (context, num) {setTimeout(() => {context.commit('changeCount', num)}, 1000)}
}
import mapActions from 'vuex'methods: {changeCountAction (n) {this.$store.dispatch('changeCountAction', n)}
}// 上面的代码等价于下面的methods: {...mapActions(['changeCountAction'])
}
this.changeCountAction(666) // 调用
getters
state: {list: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
}
getters: {filterList (state) { // 形参第一个参数必须是statereturn state.list.filter(item => item > 5) // 必须要有返回值}
}
<div>{{ $store.state.list }}</div> <!-- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] -->
<div>{{ $store.getters.filterList }}</div> <!-- [6, 7, 8, 9, 10] -->
vuex 模块化
出现的问题:
由于 vuex 使用单一状态树,应用的所有状态会集中到一个比较大的对象
当应用变得非常复杂时,store 对象就有可能变得相当臃肿
即:当项目变得越来越大的时候,vuex 会变得越来越难以维护
解决的办法:

使用模块化管理,在 store/modules 文件夹下创建你需要的模块,例如:
- store/modules/user.js
const state = {userInfo: {name: 'zs',age: 18},score: 80
}
const mutations = {}
const actions = {}
const getters = {}export default {namespaced: true,state,mutations,actions,getters
}
在 store/index.js 文件里使用你创建的模块
- store/index.js
import Vue from 'vue'
import Vuex from 'vuex'
import user from './modules/user'Vue.use(Vuex)const store = new Vuex.Store({strict: true,state: {},getters: {},mutations: {},actions: {},// 使用模块modules: {user,}
})export default store
访问方式
- 方式一
<div>{{ $store.state.user.userInfo.name }}</div>
- 方式二
<script>
import { mapState } from "map";
export default {computed: {...mapState(["user"]),...mapState("user", ["userInfo"]),},
};
</script>
相关文章:
Vue-4
自定义创建项目 目标:基于 VueCli 自定义创建项目架子 大致步骤: 安装脚手架创建项目 vue create 项目名称选择自定义 选择 Manually select features 这一项 step-1:按下空格 : 选择/取消--勾选请选择:Babel、Router、CSS、Linterstep-2…...
【Acwing】差分矩阵
图1:a和b数组映射表 由于a是b的前缀和数组,因此改变b[ x1][ y1]之后,受到影响的a中元素如右半图所示 图2:求b数组的前缀和 #include<bits/stdc.h> using namespace std;int n,m,q; int a[1010][1010]; int b[1010][1010]…...
Linux系统加固:如何有效管理系统账号
Linux系统加固:如何有效管理系统账号 1.1 口令重复次数限制1.2 避免系统存在uid相同的账号1.3 空密码的帐户1.4 口令复杂度1.5 口令生存期1.6 登录失败次数锁定策略 💖The Begin💖点点关注,收藏不迷路💖 在Linux系统中…...
在Windows中安装PyTorch
文章目录 1. 创建虚拟环境2. 检查显卡版本和CUDA3. 下载链接4. 下载5. 等待6. 检测 1. 创建虚拟环境 具体查看我之前写的 《在Windows中利用Python的venv和virtualenv创建虚拟环境》 2. 检查显卡版本和CUDA 这种情况是需要电脑上有单独的英伟达的显卡、或者英伟达的显卡和集显…...
助力智能化农田作物除草,基于YOLOv7【tiny/l/x】不同系列参数模型开发构建农田作物场景下玉米苗、杂草检测识别分析系统
在我们前面的系列博文中,关于田间作物场景下的作物、杂草检测已经有过相关的开发实践了,结合智能化的设备可以实现只能除草等操作,玉米作物场景下的杂草检测我们则少有涉及,这里本文的主要目的就是想要基于YOLOv7系列的模型来开发…...
linux nasm汇编中调用printf不报错,但调用scanf报错。抛出了分段错误(核心转储)
当我写了如下汇编时 ; nasm -f elf64 -g -F dwarf charsin.asm ; gcc charsin.o -no-pie -o charsin ; ld -o eatclib eatclib.o ; gdb eatclib[SECTION .data]SPrompt db Enter string data, followed by Enter: ,0IPrompt db Enter an integer value, followed by Enter: ,1…...
Linux系统——Nginx负载均衡模式
目录 一、Nginx优点 二、Nginx配置项——Conf Upstream 模块 三、Nginx负载均衡 1.负载均衡策略 1.1轮询 1.2IP_hash 1.3URL_hash 1.4Least_conn 1.5Weight 1.6Fair 2.Nginx负载均衡配置状态参数 3.什么是会话保持 3.1会话保持有什么作用呢 3.2Nginx会话保持 3…...
【自然语言处理之语言模型】讲解
自然语言处理之语言模型 1. 前言2. 传统语言模型3. 神经语言模型4. 训练语言模型5. 评估语言模型6. 总结 1. 前言 自然语言处理(Natural Language Processing,NLP)是计算机科学、人工智能和语言学交叉的一个领域,它研究计算机和人…...
输入一个整数n,输出这个整数的二进制的0和1的个数
输入一个整数n,输出这个整数的二进制的0和1的个数:除二取余法 代码: #include <cstdio> int main() {int n;scanf_s("%d", &n);int arr[2] { 0 };while (n) {int yu n % 2;arr[yu];n n / 2;}printf("0的个数是:…...
初阶数据结构:链表相关题目练习(补充)
目录 1. 单链表相关练习题1.1 移除链表元素1.2 反转链表1.3 链表的中间结点1.4 链表的倒数第k个结点1.5 合并两个有序链表1.6 链表分割1.7 链表的回文结构1.8 相交链表1.9 判断一个链表中是否有环1.10 寻找环状链表相遇点1.11 链表的深度拷贝 1. 单链表相关练习题 注࿱…...
java: 错误: 不支持发行版本 5
目录 一、问题描述 二、解决办法 方法一:修改idea设置中的jdk版本 方法二:配置pom.xml文件 方法三:配置maven的xml文件(推荐) 三、结果 一、问题描述 问题描述:今天创建了一个maven项目,…...
springSecruity--->和springboot结合的跨域问题
🤦♂️这个是我在springboot中使用springSecruity写一个小demo时遇到的问题,记录下来🤦♂️ 文章目录 跨域请求springboot项目中使用springSecruity导致跨域请求CrossOrigin请求失效解决方法springboot 中的跨域方法 跨域请求 什么是跨…...
网关kong记录接口处理请求和响应插件 tcp-log-with-body的安装
tcp-log-with-body 介绍 Kong的tcp-log-with-body插件是一个高效的工具,它能够转发Kong处理的请求和响应。这个插件非常适用于需要详细记录API请求和响应信息的情景,尤其是在调试和排查问题时。 软件环境说明 kong version 2.1.4 - 2.8.3 [可用亲测]C…...
ElasticSearch之Completion Suggester
写在前面 通过completion suggester可以实现如下的效果: 其实就是做的like xxx%这种。通过FST这种数据结构来存储,实现快速的前缀匹配,并且可以将es所有的数据加载到内存中所以速度completion的查询速度非常快。 需要注意,如果…...
ant 布局组件 组件等高设置
背景: 想实现一个和content等高的侧边栏,并增加侧边栏导航。 ant组件概述 Layout:布局容器,其下可嵌套 Header Sider Content Footer 或 Layout 本身,可以放在任何父容器中。Header:顶部布局,…...
不可多得的干货,网易的朋友给我这份339页的Android面经
这里先放上目录 一 性能优化 1.如何对 Android 应用进行性能分析 android 性能主要之响应速度 和UI刷新速度。 首先从函数的耗时来说,有一个工具TraceView 这是androidsdk自带的工作,用于测量函数耗时的。 UI布局的分析,可以有2块&#x…...
Qt项目:网络1
文章目录 项目:网路项目1:主机信息查询1.1 QHostInfo类和QNetworkInterface类1.2 主机信息查询项目实现 项目2:基于HTTP的网络应用程序2.1 项目中用到的函数详解2.2 主要源码 项目:网路 项目1:主机信息查询 使用QHostI…...
软件测试有哪些常用的测试方法?
软件测试是软件开发过程中重要组成部分,是用来确认一个程序的质量或者性能是否符合开发之前提出的一些要求。软件测试的目的有两方面,一方面是确认软件的质量,另一方面是提供信息,例如,给开发人员或者程序经理反馈意见…...
【C语言基础】:深入理解指针(一)
文章目录 一、内存和地址1. 内存2. 如何理解编址 二、指针变量和地址2.1 取地址操作符(&)2.2 指针变量和解引用操作符(*)2.2.1 指针变量2.2.2 如何拆解指针变量2.2.3 解引用操作符 2.3 指针变量的大小 三、指针变量类型的意义3.1 指针的解引用3.2 指针 - 整数3.3 void*指针…...
单点故障解决方案之Smart Link与Monitor Link
-SmartLink技术,创建Smart Link 组。在该组中,加入两个端口。其中1个端口是主端口,也称之为Master端口。另外1个端口是备份端口:也称之为 Slave 端口。 -Monitor Link 组也称之为“监控链路组,由上行端口和下行端口共同组成。下行…...
告别GUI点点点:用TCL脚本在ModelSim里实现自动化编译与波形生成
从零构建ModelSim自动化工作流:TCL脚本实战指南 每次修改Verilog代码后,你是否还在重复这些操作:打开ModelSim GUI→创建工程→添加文件→编译→启动仿真→手动添加信号到波形窗口?这种低效的手动操作不仅消耗时间,更会…...
语义分割涨点新思路:Strip Pooling论文精读与PyTorch复现指南
语义分割中的Strip Pooling:原理剖析与PyTorch实战指南 在计算机视觉领域,语义分割任务要求模型对图像中的每个像素进行精确分类,这对上下文信息的捕获能力提出了极高要求。传统方法如全局平均池化(GAP)往往丢失空间细…...
UnrealPakViewer:从黑盒到透明化,深度解析UE4 Pak文件管理技术突破
UnrealPakViewer:从黑盒到透明化,深度解析UE4 Pak文件管理技术突破 【免费下载链接】UnrealPakViewer 查看 UE4 Pak 文件的图形化工具,支持 UE4 pak/ucas 文件 项目地址: https://gitcode.com/gh_mirrors/un/UnrealPakViewer 在Unreal…...
89C51定时器初值计算全攻略:12M与11.0592M晶振实战对照表
89C51定时器初值计算全攻略:12M与11.0592M晶振实战对照表 在嵌入式开发中,定时器的精确控制是许多功能实现的基础。对于使用89C51系列单片机的开发者来说,定时器初值的计算是一个必须掌握的技能。本文将深入探讨89C51定时器的工作原理&#x…...
通义千问1.5-1.8B-Chat-GPTQ-Int4 轻量化模型部署对比:GPTQ-Int4 vs. 原生FP16效果与资源占用
通义千问1.5-1.8B-Chat-GPTQ-Int4 轻量化模型部署对比:GPTQ-Int4 vs. 原生FP16效果与资源占用 最近在折腾本地部署大语言模型,发现一个挺有意思的现象:很多朋友一上来就问“哪个模型效果最好?”,但往往忽略了另一个关…...
DLSS Swapper终极指南:如何智能管理多平台游戏的DLSS文件配置
DLSS Swapper终极指南:如何智能管理多平台游戏的DLSS文件配置 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper DLSS Swapper是一款专为NVIDIA显卡用户设计的智能DLSS文件管理工具,它解决了手动管…...
python面向对象————图书馆借阅系统(综合练习)
练习题5:图书馆借阅系统(综合练习) 设计一个图书馆借阅系统,综合运用三大特性: **要求:** - 基类 LibraryItem(封装):- 私有属性:__item_id、__title、__is_b…...
overseer 生产环境部署最佳实践:安全、监控和故障处理
overseer 生产环境部署最佳实践:安全、监控和故障处理 【免费下载链接】overseer Monitorable, gracefully restarting, self-upgrading binaries in Go (golang) 项目地址: https://gitcode.com/gh_mirrors/ov/overseer overseer 是一款用 Go 语言开发的可监…...
开发者面试内卷:突出重围的差异化战术
当面试成为一场无声的战争对于广大软件测试从业者而言,当下的求职环境正经历着一场深刻而静默的变革。面试不再是简单的技术问答,而演变为一场综合能力的全面较量。技术基础、项目深度、思维逻辑乃至对行业趋势的洞察,都成为面试官衡量候选人…...
ESXI里面虚拟机服务器始终保持免用户认证状态
最近安装了几个虚拟机,给第三方远程安装环境。打开虚拟机安装完,向日葵的时候,关闭控制台,虚拟机就自动注销用户关闭了,需要重新登录控制台。同事...
