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

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

自定义创建项目 目标&#xff1a;基于 VueCli 自定义创建项目架子 大致步骤&#xff1a; 安装脚手架创建项目 vue create 项目名称选择自定义 选择 Manually select features 这一项 step-1:按下空格 : 选择/取消--勾选请选择&#xff1a;Babel、Router、CSS、Linterstep-2…...

【Acwing】差分矩阵

图1&#xff1a;a和b数组映射表 由于a是b的前缀和数组&#xff0c;因此改变b[ x1][ y1]之后&#xff0c;受到影响的a中元素如右半图所示 图2&#xff1a;求b数组的前缀和 #include<bits/stdc.h> using namespace std;int n,m,q; int a[1010][1010]; int b[1010][1010]…...

Linux系统加固:如何有效管理系统账号

Linux系统加固&#xff1a;如何有效管理系统账号 1.1 口令重复次数限制1.2 避免系统存在uid相同的账号1.3 空密码的帐户1.4 口令复杂度1.5 口令生存期1.6 登录失败次数锁定策略 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在Linux系统中…...

在Windows中安装PyTorch

文章目录 1. 创建虚拟环境2. 检查显卡版本和CUDA3. 下载链接4. 下载5. 等待6. 检测 1. 创建虚拟环境 具体查看我之前写的 《在Windows中利用Python的venv和virtualenv创建虚拟环境》 2. 检查显卡版本和CUDA 这种情况是需要电脑上有单独的英伟达的显卡、或者英伟达的显卡和集显…...

助力智能化农田作物除草,基于YOLOv7【tiny/l/x】不同系列参数模型开发构建农田作物场景下玉米苗、杂草检测识别分析系统

在我们前面的系列博文中&#xff0c;关于田间作物场景下的作物、杂草检测已经有过相关的开发实践了&#xff0c;结合智能化的设备可以实现只能除草等操作&#xff0c;玉米作物场景下的杂草检测我们则少有涉及&#xff0c;这里本文的主要目的就是想要基于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. 前言 自然语言处理&#xff08;Natural Language Processing&#xff0c;NLP&#xff09;是计算机科学、人工智能和语言学交叉的一个领域&#xff0c;它研究计算机和人…...

输入一个整数n,输出这个整数的二进制的0和1的个数

输入一个整数n&#xff0c;输出这个整数的二进制的0和1的个数:除二取余法 代码&#xff1a; #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的个数是&#xff1a…...

初阶数据结构:链表相关题目练习(补充)

目录 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. 单链表相关练习题 注&#xff1…...

java: 错误: 不支持发行版本 5

目录 一、问题描述 二、解决办法 方法一&#xff1a;修改idea设置中的jdk版本 方法二&#xff1a;配置pom.xml文件 方法三&#xff1a;配置maven的xml文件&#xff08;推荐&#xff09; 三、结果 一、问题描述 问题描述&#xff1a;今天创建了一个maven项目&#xff0c;…...

springSecruity--->和springboot结合的跨域问题

&#x1f926;‍♂️这个是我在springboot中使用springSecruity写一个小demo时遇到的问题&#xff0c;记录下来&#x1f926;‍♂️ 文章目录 跨域请求springboot项目中使用springSecruity导致跨域请求CrossOrigin请求失效解决方法springboot 中的跨域方法 跨域请求 什么是跨…...

网关kong记录接口处理请求和响应插件 tcp-log-with-body的安装

tcp-log-with-body 介绍 Kong的tcp-log-with-body插件是一个高效的工具&#xff0c;它能够转发Kong处理的请求和响应。这个插件非常适用于需要详细记录API请求和响应信息的情景&#xff0c;尤其是在调试和排查问题时。 软件环境说明 kong version 2.1.4 - 2.8.3 [可用亲测]C…...

ElasticSearch之Completion Suggester

写在前面 通过completion suggester可以实现如下的效果&#xff1a; 其实就是做的like xxx%这种。通过FST这种数据结构来存储&#xff0c;实现快速的前缀匹配&#xff0c;并且可以将es所有的数据加载到内存中所以速度completion的查询速度非常快。 需要注意&#xff0c;如果…...

ant 布局组件 组件等高设置

背景&#xff1a; 想实现一个和content等高的侧边栏&#xff0c;并增加侧边栏导航。 ant组件概述 Layout&#xff1a;布局容器&#xff0c;其下可嵌套 Header Sider Content Footer 或 Layout 本身&#xff0c;可以放在任何父容器中。Header&#xff1a;顶部布局&#xff0c…...

不可多得的干货,网易的朋友给我这份339页的Android面经

这里先放上目录 一 性能优化 1.如何对 Android 应用进行性能分析 android 性能主要之响应速度 和UI刷新速度。 首先从函数的耗时来说&#xff0c;有一个工具TraceView 这是androidsdk自带的工作&#xff0c;用于测量函数耗时的。 UI布局的分析&#xff0c;可以有2块&#x…...

Qt项目:网络1

文章目录 项目&#xff1a;网路项目1&#xff1a;主机信息查询1.1 QHostInfo类和QNetworkInterface类1.2 主机信息查询项目实现 项目2&#xff1a;基于HTTP的网络应用程序2.1 项目中用到的函数详解2.2 主要源码 项目&#xff1a;网路 项目1&#xff1a;主机信息查询 使用QHostI…...

软件测试有哪些常用的测试方法?

软件测试是软件开发过程中重要组成部分&#xff0c;是用来确认一个程序的质量或者性能是否符合开发之前提出的一些要求。软件测试的目的有两方面&#xff0c;一方面是确认软件的质量&#xff0c;另一方面是提供信息&#xff0c;例如&#xff0c;给开发人员或者程序经理反馈意见…...

【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技术&#xff0c;创建Smart Link 组。在该组中&#xff0c;加入两个端口。其中1个端口是主端口&#xff0c;也称之为Master端口。另外1个端口是备份端口:也称之为 Slave 端口。 -Monitor Link 组也称之为“监控链路组&#xff0c;由上行端口和下行端口共同组成。下行…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上&#xff0c;对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...

Pydantic + Function Calling的结合

1、Pydantic Pydantic 是一个 Python 库&#xff0c;用于数据验证和设置管理&#xff0c;通过 Python 类型注解强制执行数据类型。它广泛用于 API 开发&#xff08;如 FastAPI&#xff09;、配置管理和数据解析&#xff0c;核心功能包括&#xff1a; 数据验证&#xff1a;通过…...

大数据治理的常见方式

大数据治理的常见方式 大数据治理是确保数据质量、安全性和可用性的系统性方法&#xff0c;以下是几种常见的治理方式&#xff1a; 1. 数据质量管理 核心方法&#xff1a; 数据校验&#xff1a;建立数据校验规则&#xff08;格式、范围、一致性等&#xff09;数据清洗&…...

Java中HashMap底层原理深度解析:从数据结构到红黑树优化

一、HashMap概述与核心特性 HashMap作为Java集合框架中最常用的数据结构之一&#xff0c;是基于哈希表的Map接口非同步实现。它允许使用null键和null值&#xff08;但只能有一个null键&#xff09;&#xff0c;并且不保证映射顺序的恒久不变。与Hashtable相比&#xff0c;Hash…...

LeetCode 2894.分类求和并作差

目录 题目&#xff1a; 题目描述&#xff1a; 题目链接&#xff1a; 思路&#xff1a; 思路一详解&#xff08;遍历 判断&#xff09;&#xff1a; 思路二详解&#xff08;数学规律/公式&#xff09;&#xff1a; 代码&#xff1a; Java思路一&#xff08;遍历 判断&a…...