boomYouth

周一:

1. action异步写法:

<script setup>
import sonCom1 from '@/components/sonCom1.vue'
import sonCom2 from '@/components/sonCom2.vue'
import {useCountStore} from '@/store/counter'
import {useChannelStore} from '@/store/channel'
const counterStore=useCountStore();
const ChannelStore=useChannelStore();
console.log(counterStore);
</script><template>
<div><h3>根组件-{{counterStore.count}}</h3>
<sonCom1></sonCom1>
<sonCom2></sonCom2>
<button @click="ChannelStore.getList">获取频道</button>
<ul><li v-for="item in ChannelStore.channelList" :key="item.id">{{ item.name }}</li>
</ul>
</div></template>
<style scoped></style>
import axios from "axios";
import { defineStore } from "pinia";
import { ref } from "vue";export const useChannelStore=defineStore('channel',()=>
{
//声明数据
const channelList=ref([]);
//声明方法
const getList=async()=>{//支持异步const{data:{data}}=await axios.get('http://geek.itheima.net/v1_0/channels');channelList.value=data.channels;console.log(data.channels);
}
//声明getters相关return{channelList,getList}})

2.storeToRefs 

如果将得到的store数据直接解构,会丢失掉响应式,这是由于store里面的对象都是基于reactive的,和props一样,reactive里面的操作监听什么的都是基于对象的,但是如果希望解构的时候依旧保持响应式,可以用storeToRefs方法:对于数据可以解构加上这个,但是对于方法的话可以直接解构:

<script setup>
import sonCom1 from '@/components/sonCom1.vue'
import sonCom2 from '@/components/sonCom2.vue'
import {useCountStore} from '@/store/counter'
import {useChannelStore} from '@/store/channel'
import { storeToRefs } from 'pinia'
const counterStore=useCountStore();
const ChannelStore=useChannelStore();
const {count}=storeToRefs(counterStore)
const {getList}=ChannelStore;
console.log(counterStore);
</script><template>
<div><h3>根组件-{{count}}</h3>
<sonCom1></sonCom1>
<sonCom2></sonCom2>
<button @click="getList">获取频道</button>
<ul><li v-for="item in ChannelStore.channelList" :key="item.id">{{ item.name }}</li>
</ul>
</div></template>
<style scoped></style>

3.pinia持久化插件

如果要装持久化插件,配置安装之后可以在想要用的模块的第三个参数加上将插件persist设置为true,被设置persist为true的那个模块就会将数据存到本地,并且刷新浏览器之后优先从本地获取数据:

可以修改持久化的默认配置,需要在persist里面配置

persist
{key:配置键名
paths:['']单引号包裹的要保留的数据的数组
storage:改成可以用getItems这种方法的存储对象}

 4.pnpm包管理器

5.ESLint配合Prettier :

/* eslint-env node */
require('@rushstack/eslint-patch/modern-module-resolution')module.exports = {root: true,extends: ['plugin:vue/vue3-essential','eslint:recommended','@vue/eslint-config-prettier/skip-formatting'],parserOptions: {ecmaVersion: 'latest'},rules: {//专注于代码的美观度'prettier/prettier': ['warn',{singleQuote: true, //单引号semi: false, //无分号printWidth: 80, //每行宽度至多80字符trailingComma: 'none', //不加对象数组最后逗号endOfLine: 'auto' //换行符号不限制(win mac不统一)}],//Eslint更加专注规范,如果不符合,报错'vue/multi-word-component-names': ['warn',{ignores: ['index']}],'vue/no-setup-props-destructure': ['off'], //关闭props结构的校验'no-undef': 'error' //未定义变量没有使用警告}
}

6.基于husky的代码 :暂停区eslint校验

为了解决上面的问题,这里就出了一个解决方案的步骤:

这样就可以在已经修改过的文件里面检查,而不是检查所有的,这样就可以做到,只检查更新之后的版本,而不会去管历史版本的问题;

 7.vue-router4路由

配置基地址

<script setup>
// 获取路由对象 router useRouter
// const router=useRouter();
//获取路由参数
// const route=userRoute();import { useRoute, useRouter } from 'vue-router'
const router = useRouter()
const route = useRoute()
const goList = () => {router.push('/list')console.log(router, route)
}
</script><template><div>我是app</div><button @click="$router.push('/home')">首页</button><button @click="goList">列表页</button>
</template><style scoped></style>

8.ElementPlus按需导入

在这个组件里面,不仅可以直接用这里面的组件,并且在components中定义的组件,可以直接用

<script setup>
// 获取路由对象 router useRouter
// const router=useRouter();
//获取路由参数
// const route=userRoute();import { useRoute, useRouter } from 'vue-router'
const router = useRouter()
const route = useRoute()
const goList = () => {router.push('/list')console.log(router, route)
}
</script><template><div>我是app</div><el-button @click="$router.push('/home')">首页</el-button><button @click="goList">列表页</button>
</template><style scoped></style>

9.pinia构建仓库和持久化:

在这里,有一个致命错误,如果是这样写会报错,但是这样就不会

会报错
return
{}不会报错
return{}

 pinia独立维护,仓库统一导出::

//pinia独立维护import { createPinia } from 'pinia'
import persist from 'pinia-plugin-persistedstate'const pinia = createPinia()
pinia.use(persist)//统一导出
export default pinia
export * from './modules/user'
export * from './modules/counter'
<script setup>
// 获取路由对象 router useRouter
// const router=useRouter();
//获取路由参数
// const route=userRoute();import { useRoute, useRouter } from 'vue-router'
import { useUserStore, useCountStore } from '@/stores/index'
const userStore = useUserStore()
const countStore = useCountStore()const router = useRouter()
const route = useRoute()
const goList = () => {router.push('/list')console.log(router, route)
}
</script><template><div>我是app</div><el-button @click="$router.push('/home')">首页</el-button><button @click="goList">列表页</button><p>{{ userStore.token }}</p><el-button @click="userStore.setToken('dfghjuhfghjhgfghjk')">登录</el-button><el-button @click="userStore.removeToken">退出</el-button><hr />{{ countStore.count }}<el-button @click="countStore.add"></el-button>
</template><style scoped></style>

10.数据交互-请求工具设计

 

import { useUserStore } from '../stores'
import { ElMessage } from 'element-plus'
import router from '../router'
import axios from 'axios'
const baseURL = 'https://big-event-vue-api-t.itheima.net'
const instance = axios.create({baseURL,timeout: 10000//   headers: { 'X-Custom-Header': 'foobar' }
})
// Add a request interceptor
axios.interceptors.request.use(function (config) {// 携带token// Do something before request is sentconst useStore = useUserStore()if (useStore.token) {config.headers.Authorization = useStore.token}return config},function (error) {// Do something with request errorreturn Promise.reject(error)}
)// Add a response interceptor
axios.interceptors.response.use(function (response) {// Any status code that lie within the range of 2xx cause this function to trigger// Do something with response dataif (resizeBy.data.code === 0) {return response}ElMessage.error(response.data.message || '服务异常')return Promise.reject(response.data)},function (error) {// Any status codes that falls outside the range of 2xx cause this function to trigger// Do something with response error//错误的特殊情况401 权限不足或者token过期=》拦截到登录if (error.response?.status === 401) {router.push('/login')}//错误的默认情况ElMessage.error(error.response.data.message || '服务异常')return Promise.reject(error)}
)export default instance
export { baseURL }

同时附上之前学姐问的sessionStorage和localStorage的区别:

cookie、localStorage和sessionStorage三者的区别_localstorage区别_愚舜的博客-CSDN博客

数据库里面的12,13补测题,六级单词,六级翻译; 

周二,周三:

六级单词:

 

今天刷了一个题目,由于之前没有学过,但是我现在打算用刷题的方式学习,也就是要用到那个就去搜:

终于写完了第一个力扣题;

刷题总结:

rfind,从后面开始找,第一个参数为要找的子串,第二个参数为从哪个下标往前找;

substr:从某个下标开始找,包括改下标,第二个参数为找几个;

六级单词,翻译:

1.路由设计和配置:


import { createRouter, createWebHistory } from 'vue-router'
//创建router实例
// 配置路由模式:
// hash模式  createWebHistory 跳转带#号
// history模式 createWebHashHistory  跳转不带#号
const router = createRouter({history: createWebHistory(import.meta.env.BASE_URL),routes: [// 配置登录和架子{path: '/login',component: () => import('@/views/login/LoginPage.vue') //登录页},{path: '/',component: () => import('@/views/layout/LayoutContainer.vue'),redirect: '/house/manage',children: [{path: '/house/manage',component: () => import('@/views/house/HouseManage.vue')},{path: '/house/channel',component: () => import('@/views/house/HouseChannel.vue') //登录页},{path: '/user/profile',component: () => import('@/views/user/UserProfile.vue') //个人资料页},{path: '/user/password',component: () => import('@/views/user/UserPassWord.vue') //重置密码页},{path: '/user/avatar',component: () => import('@/views/user/UserAvatar.vue') //}]}]
})export default router

2.登陆注册静态结构&&基本切换

利用VeeValidate插件,并且用yup验证架构简化代码;
登陆注册共用一个界面;

3.springboot快速上手:

 c/s架构:客户端/服务器

b/s架构:浏览器/服务器

springboot  properies配置文件 

周四:

写完了数据库作业,概率论作业;

周五,周六:

写概率论作业;

周日:

复习六级单词,搭建项目环境;

总的来说,这周还是太摆烂了,马上考六级了,然后又有普通话,还要期末考试了很多作业也开始陆续检查了,今天项目小的答辩,学姐问了很多基础知识都回答的不是很好,更重要的是项目要终极答辩了,这就需要自己基础更多时间来学习,这一周更重要的是补充专业基础知识,合理安排学业和专业上的计划冲突;最后,想用木心的一句话来激励自己:

我的迷茫和胆怯也一直都在,但我告诉自己,就算是万丈深渊,走下去,也是前程万里。

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

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

相关文章

力扣打卡 1410-HTML实体解析器

Problem: 1410. HTML 实体解析器 思路 当处理 HTML 实体解析时&#xff0c;先构建一个映射&#xff0c;将特殊字符实体与它们的替换字符对应起来。 接下来&#xff0c;使用迭代的方法遍历输入的文本字符串。当遇到&字符时&#xff0c;开始检查可能的字符实体。 如果找到了…

1、nmap常用命令

文章目录 1. 主机存活探测2. 常见端口扫描、服务版本探测、服务器版本识别3. 全端口&#xff08;TCP/UDP&#xff09;扫描4. 最详细的端口扫描5. 三种TCP扫描方式&#xff08;1&#xff09;TCP connect 扫描&#xff08;2&#xff09;TCP SYN扫描&#xff08;3&#xff09;TCP …

PTA-7-55 判断指定字符串是否合法

题目&#xff1a; 输入一个字符串&#xff0c;判断指定字符串是否合法&#xff0c;要求字符串由7个字符组成&#xff0c;并且第一位必须是大写字母&#xff0c;2-4为必须是小写字母&#xff0c;后3为必须是数字字符&#xff0c;要求使用正则表达式来实现。 根据题目要求&#x…

防火墙命令行基础配置实验(H3C模拟器)

嘿&#xff0c;这里是目录&#xff01; ⭐ H3C模拟器资源链接1. 实验示意图2. 要求3. 当前配置3.1 PC配置3.2 FW配置&#xff08;防火墙&#xff09;[^7][^8]3.2.1 FW1配置3.2.2 FW2配置 3.3 R配置3.3.1 R1配置3.3.2 R2配置 3.4 SW配置3.4.1 SW1配置3.4.2 SW2配置3.4.3 SW3配置…

1.9 字符数组

1.9 字符数组 一、字符数组概述二、练习 一、字符数组概述 所谓字符数组&#xff0c;就是char类型的数组&#xff0c;比如 char a[]&#xff0c;是C语言中最常用的数组类型&#xff0c;先看一个程序 #include <stdio.h> #define MAXLINE 1000 //最大行长度限制 int get…

gradle构建项目速度优化及排查方式

文章目录 一、前言二、Android项目优化1、相关配置2、构建速度分析 三、Gradle项目通用优化1、分析构建耗时2、使用配置进行优化3、优化依赖解析a. 避免不必要和未使用的依赖项b. 优化存储库顺序 c. 最小化动态和快照版本d. 通过构建扫描查找动态和变化的版本e. 通过构建扫描可…

⑤【Sorted Set】Redis常用数据类型: ZSet [使用手册]

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ 目录 ⑤Redis Zset 操作命令汇总1. zadd 添加或…

[C/C++]数据结构 堆的详解

一:概念 堆通常是一个可以被看做一棵完全二叉树的数组对象,它是一颗完全二叉树,堆存储的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并且需要满足每个父亲结点总小于其子节点(或者每个父亲结点总大于其子节点) 堆可以分为两种: 小堆: 任意一个父亲节点都小于其子…

AIGC创作系统ChatGPT网站源码、支持最新GPT-4-Turbo模型、GPT-4图片对话能力+搭建部署教程

一、AI创作系统 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI…

Rust逆向学习 (6)

文章目录 Reverse for Stringpush_str 与 format!bytes方法chars方法 总结 Reverse for String 上一篇文章简单分析了Vec变长数组的结构&#xff0c;今天来介绍String。实际上Rust的字符串类型对于我们并不陌生&#xff0c;在前面几篇文章的几乎任何一个示例中都可以找到它们。…

项目开发的大致流程

一、需求分析 功能界面… 二、前后端沟通 传递参数类型接口请求方式&#xff08;GET POST PUT DELETE.&#xff09;传参的方式… 三、后端编写接口文档&#xff08;包括但不限于以下几个方面&#xff09; 接口名称是否清晰 接口地址是否完整 接口请求方式是否正确 请求参…

HarmonyOS应用开发者基础认证【满分答案】

系列文章 HarmonyOS应用开发者基础认证【闯关习题 满分答案】 HarmonyOS应用开发者基础认证【满分答案】 HarmonyOS云开发基础认证【最新题库 满分答案】 目录 系列文章一、判断题二、单选题三、多选题 一、判断题 在Column和Row容器组件中&#xff0c;justifyContent用于设置…

处理数据中的缺失值--删除缺少值的行

两个最主要的处理缺失值的方法是&#xff1a; ❏ 删除缺少值的行&#xff1b; ❏ 填充缺失值&#xff1b; 我们首先将serum_insulin的中的字段值0替换为None&#xff0c;可以看到缺失值的数量为374个&#xff1b; print(pima[serum_insulin].isnull().sum()) pima[serum_insu…

HarmonyOS(七)——@BuilderParam装饰器

前言&#xff1a; 前面我们认识了Builder装饰器&#xff1a;自定义构建函数&#xff0c;今天我们继续认识下一个装饰器——BuilderParam装饰器。 当开发者创建了自定义组件&#xff0c;并想对该组件添加特定功能时&#xff0c;例如在自定义组件中添加一个点击跳转操作。若直接…

常见树种(贵州省):022绣线菊、月月青、金合欢、胡枝子、白刺花

摘要&#xff1a;本专栏树种介绍图片来源于PPBC中国植物图像库&#xff08;下附网址&#xff09;&#xff0c;本文整理仅做交流学习使用&#xff0c;同时便于查找&#xff0c;如有侵权请联系删除。 图片网址&#xff1a;PPBC中国植物图像库——最大的植物分类图片库 一、绣线菊…

100天精通Python(可视化篇)——第109天:Pyecharts绘制各种常用地图(参数说明+代码实战)

文章目录 专栏导读一、地图应用场景二、参数说明1. 导包2. add函数 三、地图绘制实战1. 省市地图2. 中国地图3. 中国地图&#xff08;带城市&#xff09;4. 中国地图&#xff08;分段型&#xff09;5. 中国地图&#xff08;连续型&#xff09;6. 世界地图7. 行程轨迹地图8. 人口…

WebUI自动化学习(Selenium+Python+Pytest框架)001

开启另一篇学习之路_WebUI自动化 先来一波基础概念 1.自动化适合什么类型的项目: 重复性高,迭代频率高的回归测试。数据量大、手工难以实现的压力测试&#xff0c;手工执行效率低的兼容测试 2.自动化的优点: 高效率、可重复、减少人为错误、克服手工测试的局限性 3.自动化…

光线追踪-Peter Shirley的RayTracingInOneWeekend系列教程(book1-book3)代码分章节整理

自己码完了一遍了&#xff0c;把代码分章节整理了一下&#xff0c;可以按章节独立编译&#xff0c;运行, 也可以直接下载编译好的release版本直接运行。 项目地址&#xff1a; Github: https://github.com/disini/RayTracingInOneWeekendChaptByChapt ​ ​ ​ ​

17 Go的文件操作

概述 在上一节的内容中&#xff0c;我们介绍了Go的反射&#xff0c;包括&#xff1a;reflect.TypeOf、reflect.ValueOf、reflect.Value等。在本节中&#xff0c;我们将介绍Go的文件操作。在Go语言中&#xff0c;文件是一个抽象的概念&#xff0c;表示的是一段连续的字节序列。文…

iframe实现跨域通信的方法

在前端开发中&#xff0c;我们经常会遇到跨域通信的问题。跨域通信是指在浏览器的同源策略下&#xff0c;不同源之间的通信。本文将介绍如何通过 iframe 实现跨域通信&#xff0c;以及不跨域通信的方法和代码示例。 引言 跨域通信是指在浏览器的同源策略下&#xff0c;不同源之…