Vue的学习补充

news2024/10/7 10:24:10

1.Vue路由-404

作用:当路径找不到匹配时,给个提示页面

位置:配在路由最后

语法:path:'*'(任意路径)-前面不匹配就命中最后这个

 2.Vue路由-模式设置

  • hash路由(默认)  例如:http://localhost:8080/#/home
  • history路由(常用) http://localhost:8080/home(以后上线需要服务器端支持)

3.编程式跳转

查询参数传参

方式一:适合单一传参

 

方式二:适合传多个值

动态路由传参

4.基于vueCli自定义创建项目架子

5.ESlint代码规范

代码规范:一套写代码的约定规则。

JavaScript Style规范说明 https://standardjs.com/rules-zhcn.html

6.Vuex

1.是什么:

Vuex是一个vue的状态管理工具,状态就是数据

大白话:vuex是一个插件,可以帮我们管理vue通用的数据(多组件共享的数据)

2.场景:

①某个状态在很多个组件来使用(个人信息)

②多个组件共同维护一份数据(购物车)

3.优势

①共同维护一份数据,数据集中化管理

响应式变化

③操作简洁(vuex提供了一些辅助函数)

步骤:

目标:安装vuex插件,初始化一个空仓库

  1. 安装 Vuex 库

可以使用 npm 或者 yarn 等包管理器来安装 Vuex 库。

npm install vuex

2.创建 store

在 Vue 3 中,需要先创建一个 store 对象,然后再将其传递给 Vue 的 createApp() 函数来创建 Vue 应用程序。

import { createStore } from 'vuex'

const store = createStore({
  state: {
    count: 0
  },
  mutations: {
    increment(state) {
      state.count++
    }
  },
  actions: {
    incrementAsync({ commit }) {
      setTimeout(() => {
        commit('increment')
      }, 1000)
    }
  }
})

export default store
  1. 3.将 store 对象注入到 Vue 应用程序

可以使用 app.use() 方法将 store 对象注入到 Vue 应用程序中。

import { createApp } from 'vue'
import App from './App.vue'
import store from './store'

const app = createApp(App)
app.use(store)
app.mount('#app')

4.在组件中使用 store

核心概念-state

使用数据:

①通过store直接访问

(1)this.$store.state.count

(2)import 导入 store

在main.js文件中可以先导入store,后使用this.$store.count

辅助函数-mapState

在组件中,可以使用 computed 属性来获取 store 中的状态,使用 methods 属性来调用 store 中的 mutations 和 actions。

mapState(['count'])得到的是一个对象,可以使用展开运算符将展开的对象放到computed中

<template>
  <div>
    <p>Count: {{ count }}</p>
    <button @click="increment">Increment</button>
    <button @click="incrementAsync">Increment Async</button>
  </div>
</template>

<script>
import { mapState, mapMutations, mapActions } from 'vuex'

export default {
  computed: {
    ...mapState(['count'])
  },
  methods: {
    ...mapMutations(['increment']),
    ...mapActions(['incrementAsync'])
  }
}
</script>

核心概念-mutations

目标:明确vuex同样遵循单向数据流,组件中不能直接修改仓库的数据。

错误代码:this.$store.state.count

目标:掌握mutations的操作流程,来修改state数据。(state数据的修改只能通过mutations)

1.定义mutations对象,对象中存放修改state的方法。

 2.组件中调用mutations

传参

提交mutation是可以传递参数的` this.$store.commit("xxx",参数)`

 如果想要传递多个参数的时候,可以用对象传递

注意点:mutation参数有且只能有一个,如果需要多个参数,包装成一个对象。

store和使用者的双向绑定:

 辅助函数:mapMutations

目标:掌握辅助函数maoMutations,映射方法

mapMutations和mapState很像,它是把位于mutations中的方法提取了出来,映射到组件methods

 核心概念-actions

目标:明确actions的基本语法,处理异步操作

需求:一秒钟之后,修改state的count成666

说明:mutations必须是同步的(便于监测数据变化,记录调试)

 action中并不是直接修改store中的值,而是通过commit提交mutation中的方法来修改值

辅助函数-mapActions

目标:掌握辅助函数mapActions,映射方法。

mapActions是把位于actions中的方法提取出来,映射到组件methods

核心概念-getters

目标:掌握核心概念getters的基本语法(类似于计算属性)

说明:除了state之外,有时我们还需要从state中派生出一些状态,这些状态是依赖state的,此时会用到getters

 2.访问getters

①通过store访问getters

{{$store.getters.filterList}}

②通过辅助函数mapGetters映射

computed:{
...mapGetters(['filterList'])
},
{{filterList}}

辅助函数-mapGetters

 核心概念-模块module(进阶语法)

目标:掌握核心概念module模块的创建

由于vuex使用单一状态树,应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时,store对象就是可能变得相当臃肿。(当项目变得越来越大的时候,Vuex会变得越来越难以维护)。

 

 访问模块中state

目标:掌握模块中state的访问语法

尽管已经分模块了,但其实子模块的状态还是会挂到根级别的state中,属性名就是模块名。

使用模块中的数据:

①直接通过模块名访问$route.store.模块名.xxx

②通过mapState映射

默认根级别的映射  mapState(['xxx'])

子模块的映射 mapState('模块名',['xxx'])-需要开启命名空间

 访问模块getters

目标:掌握模块中getters的访问语法

使用模块中getters中的数据:

①直接通过模块名访问$store.getters["模块名/xxx"]

②通过mapGetters映射

默认根级别的映射mapGetters(['xxx'])

子模块的映射mapGetters('模块名',['xxx'])-需要开启命名空间

const getters = {
    //分模块后,state指代子模块的state
    UpperCaseName(state) {
        return state.userInfo.name.toUpperCase()
    }
}

 访问mutation的调用语法

注意:默认模块中的mutation和actions会被挂载到全局,需要开启命名空间,才会挂载到子模块

调用子模块中mutation:

①直接通过store调用$store.commit('模块名/xxx',额外参数)

②通过mapMutations映射

默认根级别的映射mapMutations(['xxx'])

子模块的映射mapMutations('模块名',['xxx'])-需要开启命名空间

 访问action

 

Vue3的优势

 

 1.代码量变少了

2.分散式维护转为集中式维护,更容易封装复用。

create-vue搭建Vue3项目

1.前提环境条件

已安装16.0或更高版本的Node.js

node -v

2.创建一个Vue应用

npm init vue@latest

这一指令将会安装并执行create-vue

项目文件简介:

 

组件导入,无需注册。 

Vue3语法:

组件导入,无需注册。 

new Vue()创建一个应用实例=>createApp()

createRouter()、createStore()

将创建实例进行封装,保证每个实例的独立封闭性。

组合式API-setup

1. setup比beforeCreate生命周期函数还要早。

2.setup函数中获取不到this(this是undefined),vue3中基本上不会用到this

如果想要使用setup中的数据,必须return 

问题:每次都要return好麻烦,有什么解决方法吗?

只需要在script中加上setup 

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

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

相关文章

ubuntu mmdetection配置

mmdetection配置最重要的是版本匹配&#xff0c;特别是cuda&#xff0c;torch与mmcv-full 本项目以mmdetection v2.28.2为例介绍 1.查看显卡算力 因为gpu的算力需要与Pytorch依赖的CUDA算力匹配&#xff0c;低版本GPU可在相对高的CUDA版本下运行&#xff0c;相反则不行 算力…

【多线程】Thread类的基本用法

文章目录 线程创建线程中断线程等待线程休眠 线程创建 方法一&#xff1a;用一个类 继承Thread 重写run方法 //创建一个类 继承Thread class MyThread extends Thread {//run方法是线程的入口Overridepublic void run() {while (true){System.out.println("hello Thread…

Unity 3D基础——缓动效果

1.在场景中新建两个 Cube 立方体&#xff0c;在 Scene 视图中将两个 Cude的位置错开。 2.新建 C# 脚本 MoveToTarget.cs&#xff08;写完记得保存&#xff09; using System.Collections; using System.Collections.Generic; using UnityEngine;public class MoveToTarget : M…

代理和多级代理

文章目录 代理使用场景代理过程实验演示多级代理 代理使用场景 1、拿下远程 web 服务器 2、webshell 链接不稳定&#xff0c;需要使用稳定的木马程序 3、远程服务器无法直接链接攻击者电脑 4、需要借助公网vps转发来自失陷服务器的木马流量 5、借助frp服务端(vps)和客户端(内网…

AI为锚,创新为帆,谱写数实融合发展新篇章

云聚园区&#xff0c;智享未来。9月27日&#xff0c;在苏州工业园区管理委员会、华为云计算技术有限公司的指导下&#xff0c;由SISPARK&#xff08;苏州国际科技园&#xff09;、华为&#xff08;苏州&#xff09;人工智能创新中心联合主办&#xff0c;东北大学工业智能与系统…

2.用Flask框架创建一个简单的Web程序

怎么安装Flask框架 在终端输入以下命令&#xff1a; pip install flask 验证flask安装&#xff1a; flask --version 编写app.py文件 app文件py如下&#xff1a; #导入flask框架中的两个模块 #Flask允许创建一个Flask应用实例&#xff0c;处理路由、请求和响应等功能 #render…

【交叉编译】tslib库交叉编译

tslib 是一个捕捉触屏事件的工具。qt 库在交叉编译的时候&#xff0c;提供了 -tslib 选项&#xff0c;使用该选项需要提前对 tslib 库进行交叉编译。 目录 1、源码下载 2、安装依赖 3、创建编译脚本 4、开始编译 1、源码下载 tslib 源码下载地址: https://github.com/lib…

oracle 与mysql兼容日期(格式:YYYY年MM月DD日)

日期类型&#xff1a;date 查询sql&#xff1a; select concat(concat(concat(to_char(END_DATE,YYYY),年),concat(to_char(END_DATE,MM),月)),concat(to_char(END_DATE,DD),日)) AS dateInfo from test显示结果&#xff1a;

python jieba 词性标注 中文词性分类 nlp jieba.posseg

参考&#xff1a;https://blog.csdn.net/yellow_python/article/details/83991967 from jieba.posseg import dt dt.word_tag_tab[好看] >>> vflag_en2cn { ‘a’: ‘形容词’, ‘ad’: ‘副形词’, ‘ag’: ‘形语素’, ‘an’: ‘名形词’, ‘b’: ‘区别词’, ‘…

2023年工业大麻行业研究报告

第一章 行业概况 1.1 定义 工业大麻行业是一个多面向且快速发展的领域&#xff0c;涵盖了从种植、加工到分销各个环节。与休闲大麻不同&#xff0c;工业大麻主要用于制造和商业用途。工业大麻的种植重点放在产生纤维、籽和生物质等有价值的产品上&#xff0c;而非产生高含量的…

Rt-Thread 移植3--临界段保护(KF32)

1.什么是临界段 执行下的时候不能被中断的代码段。 系统调度和外部中断都会打断&#xff0c;系统调度本质是产生PendSV中断。NMI FAULST和Hard FAULE除外2.代码实现 contex_gcc.c中添加 rt_base_t __attribute__((noinline)) rt_hw_interrupt_disable(void) {asm volatile(…

阿里云服务器内存型20个实例规格性能特点和适用场景汇总

阿里云服务器ECS内存型规格族属于独享型云服务器&#xff0c;在高负载不会出现计算资源争夺现象&#xff0c;因为每一个vCPU都对应一个Intel Xeon 处理器核心的超线程&#xff0c;内存型实例的云服务器其CPU处理器与内存配比通常为1:8&#xff0c;最高比约为1:20。本文介绍阿里…

Seata入门系列【6】分布式事务之TCC模式简介

1 历史背景 关于TCC的概念&#xff0c;最早是由Pat Helland于2007年发表的一篇名为《Life beyond Distributed Transactions:an Apostate’s Opinion》的论文提出。在该论文中&#xff0c;TCC还是以Tentative-Confirmation-Cancellation命名。正式以Try-Confirm-Cancel作为名称…

【运维笔记】swow源码编译安装

swow的github网址 https://github.com/swow/swow 从github中拉取源码 git pull https://github.com/swow/swow.git 编译安装 github中readme文件讲述了安装方法 这里整理了命令&#xff0c;进入拉取项目的目录后依次执行命令即可 #pwd 确保自己在swow目录中&#xff0c;如…

linux中搭建c语言环境并编译

安装gcc 安装 yum install gcc 检查 gcc --version 编译文件 1.编写test.c vim test.c #include <stdio.h>int main() {printf(" ***** \n");printf(" * o o * \n");printf("* ^ *\n");printf("* - *\n");printf…

VUE树结构实现

实现效果: 数据库表结构如下: 要求:需要有parentId,id。parentId就是父记录的id 表数据要求:一定不要让一条记录的parentid和id相同 前端代码: 注意:el-table标签里面需要加上属性,才可以有下拉箭头的样式 <el-table v-loading="listLoading" :data

· C语言在自动化如何控制系统

今日话题 C语言在自动化如何控制系统&#xff1f; 类&#xff1a;理解构造函数、属性、封装、继承、多态&#xff0c;有助于组织管理系统对象。 数据库&#xff1a;熟悉常见数据库&#xff08;如Access、SQL&#xff09;、SQL语言和操作&#xff0c;用于高效数据管理。 …

MySQL Row size too large (> 8126)

错误信息 ERROR 1118 (42000) at line 901: Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMATDYNAMIC or ROW_FORMATCOMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline. 错误原因 这个问题…

Stewart六自由度正解、逆解计算-C#和Matlab程序

目录 一、Stewart并联六自由度正解计算 &#xff08;一&#xff09;概况 &#xff08;二&#xff09;Matlab正解计算 1、参考程序一 2、参考程序二 &#xff08;三&#xff09;C#程序正解计算 1、工程下载链接 2、正解运行计算 &#xff08;四&#xff09;正程…

zabbix监控——自定义监控内容

目录 自定义监控项步骤 案例 1、明确需要执行的命令 2、创建 zabbix 的监控项配置文件&#xff0c;用于自定义 key&#xff0c;并重启zabbix-agent2 3、.在服务端验证新建的监控项 4、在 Web 页面创建自定义监控项模板 1&#xff09;创建模板 2&#xff09;创建监控项 …