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,一经查实,立即删除!

相关文章

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…

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

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

常见树种(贵州省):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 ​ ​ ​ ​

Rust语言入门教程(八) - 引用与借用

上一章的内容中我们讨论了Rust的所有权系统&#xff0c;当我们不想移动值的所有权时&#xff0c;我们可以使用引用和借用&#xff0c;而这正是本章想要讨论的问题。 引用&#xff08;References&#xff09; 引用允许你访问或修改数据而无需获取数据的所有权。在 Rust 中&…

阿里云MQTT: 子设备上线流程

0. 背景 阿里云网关子设备上平台的资料很少。有些厂家直接配置每个子设备的DeviceSecret到网关里&#xff0c;显然太麻烦了&#xff01;我经过阅读阿里文档&#xff0c;发现有些简化的方法&#xff0c;更便于客户使用&#xff0c;因此分享给大家。 1. 主要信息片段 子设备 $…

基于springboot+mysql实现的小区物业管理系统

基于springbootmysql实现的小区物业管理系统,演示地址:登录 演示账号&#xff1a;用户名:744621980qq.com 密码:123456,主要包含房屋管理(楼栋管理&#xff0c;单元管理&#xff0c;房屋管理)&#xff0c;车位管理&#xff0c;缴费管理&#xff0c;社区服务( 公告管理&#xf…

Linux socket编程(6):IO复用之select原理及例子

文章目录 1 五种I/O模型1.1 阻塞I/O模型1.2 非阻塞I/O模型1.3 I/O复用模型1.4 信号驱动I/O模型1.5 异步I/O模型 2 select函数3 select实战&#xff1a;实现多个套接字监听3.1 客户端3.2 服务端3.3 实验结果3.4 完整代码 在之前的网络编程中&#xff0c;我们遇到了一个问题&…

Qt TCP网络上位机的设计(通过网络编程与下位机结合)

目录 TCP 协议基础 QTcpServer 和 QAbstractSocket 主要接口函数 TCP 应用程序 1.服务端 2.客户端 上位机通过网络编程与下位机实现通信 TCP 协议基础 传输控制协议&#xff08;TCP&#xff0c;Transmission Control Protocol&#xff09;是一种面向连接的、可靠的、基于…

mysql从库设置为只读

直奔主题&#xff0c;mysql设置为只读后&#xff0c;无法增删改。 设置命令&#xff1a; mysql> set global read_only1; #1是只读&#xff0c;0是读写 mysql> show global variables like %read_only%; 以下是相关说明&#xff1a; 1、对于数据库读写状态&#xf…

详解RT-DETR网络结构/数据集获取/环境搭建/训练/推理/验证/导出/部署

论文地址&#xff1a;RT-DETR论文地址 代码地址&#xff1a;RT-DETR官方下载地址 目录 一、本文介绍 二、RT-DETR的网络结构 2.1、模型概览 2.2、高效混合编码器 2.3、IoU感知查询选择 2.4、 可扩展的RT-DETR 三、RT-DERT的环境搭建 四、免费数据集获取 五、获取RT-D…