vue3项目手写记录(持续更新中)

news2024/9/21 10:41:39

安装pnpm

1)npm install -g pnpm 

安装到全局,

2)pnpm create vue创建项目,不要在根级别c盘路径下创建项目.生成的这个项目,不要直接在根路径下,根路径内的文件夹下创建.

3)pnpm dev 运行项目

pnpm install 安装包node_modules.

配置eslient和pretteir

在.eslintrc.cjs文件内

rules下配置prettier,对代码写后的格式的配置

vue/mulit 是对名字的设定规则,Eslient是对代码规范的判断,会有错误.已经自带了.

 rules: {
    'prettier/prettier': [
      'warn',
      {
        singleQuote: true, // 单引号
        semi: false, // 无分号
        printWidth: 80, // 每行宽度至多80字符
        trailingComma: 'none', // 不加对象|数组最后逗号
        endOfLine: 'auto' // 换行符号不限制(win mac 不一致)
      }
    ],
    'vue/multi-word-component-names': [
      'warn',
      {
        ignores: ['index'] // vue组件名称多单词组成(忽略index.vue)
      }
    ],
    'vue/no-setup-props-destructure': ['off'], // 关闭 props 解构的校验
    // 💡 添加未定义变量错误提示,create-vue@3.6.3 关闭,这里加上是为了支持下一个章节演示。
    'no-undef': 'error'
  }

提交前做代码检查

提交到git仓库内,可能有错误也可也提交

1)git init 初始化仓库

2)能够是提交前的一个钩子函数,会使得当提交前先直线这个文件内的命令

3.

执行命令,pnpm lint检查在提交前.

检查的是package.json内的script下的lint的命令.是全部检查.

提交时只看一部分校验(暂存区)

1)安装插件

2.配置package.json文件

执行lint-staged命令,执行插件.对于暂存区内新添加的文件会进行校验.

原本提交会对所有暂存区文件,但现在只对提交的文件在暂存区内进行检验.

Vue3的路由

从vue-router插件内不直接取出vueRouter,取createRouter内部也会返回一个router对象,createRouter的参数,内是history变成mode的,但是history的参数值,可以使用createWebHistory返回对象内包含模式import.meta.env.BASE_URL(vite内)是全局变量.这个参数会被createRouter会使得,跳转还有router都写一样的,在跳转到这些所写的路径上会自动加上这个全局变量.

hash:#,history不带#.

setup内没用this,也娶不到$router,$route

Vue3的按需导入

导入之后和vue2一样,直接写组件名如<el-button></el-button>直接写即可.

对于vue2有一个优点,vue3的按需导入,可以直接写组件的<Hello-World>名字类似都可以自动导入.

导入不写默认是js

pinia仓库

1)

使得含有配置

2)导入,使用

pinia实现持久化store仓库

main.js内所写持久化和仓库的代码都放入index,js文件内.

在组件内导入某个store下的js文件,可能很麻烦,因此我们统一写在index.js中导出,更方便.写在index.js内将其他js的导入,再导出.导入导出的都是内存地址.

import * from '.js'是导入所有按需的.导入文件后,有变量名.

axios请求设置

1)pnpm add axios 安装

2)在utils/request.js下封装axios,自定义一个axios使用.

3)

导入aixos,自定义一个axios,导出

import axios from 'axios'

const baseURL = 'http://big-event-vue-api-t.itheima.net'

const instance = axios.create({
  // TODO 1. 基础地址,超时时间
})

响应拦截器,config发送的请求

instance.interceptors.request.use(
  (config) => {
    // TODO 2. 携带token
    return config
  },
  (err) => Promise.reject(err)
)

instance.interceptors.response.use(
  (res) => {
    // TODO 3. 处理业务失败
    // TODO 4. 摘取核心响应数据
    return res
  },
  (err) => {
    // TODO 5. 处理401错误
    return Promise.reject(err)
  }
)

export default instance

//import { useUserStore } from '@/stores/user'
//import axios from 'axios'
import router from '@/router'

//手动导入组件,导入函数.
//import { ElMessage } from 'element-plus'

//const baseURL = 'http://big-event-vue-api-t.itheima.net'

const instance = axios.create({
  baseURL,
  timeout: 100000
})

instance.interceptors.request.use(
  (config) => {
    const userStore = useUserStore()
    if (userStore.token) {

//给请求头设置信息,会去验证.
      config.headers.Authorization = userStore.token
    }
    return config
  },

//失败
  (err) => Promise.reject(err)
)

//第一个是成功响应,但是对响应码的判定

instance.interceptors.response.use(
  (res) => {

//响应成功
    if (res.data.code === 0) {
      return res
    }

//失败提示,错误提示
    ElMessage({ message: res.data.message || '服务异常', type: 'error' })
    return Promise.reject(res.data)
  },
  (err) => {

//错误,提示,提示看是否是401跳转.
    ElMessage({ message: err.response.data.message || '服务异常', type: 'error' })
    console.log(err)
    if (err.response?.status === 401) {
      router.push('/login')
    }
    return Promise.reject(err)
  }
)

export default instance
export { baseURL }
 

view路由分文件夹,不根据是几级路由,根据属于登入的页面.

校验表单

el-form组件所写出的表单校验.

1)写响应式的数据

2)双向数据绑定响应式内容,在el-input

3)在表单上赋值model属性,整个会来检验.

4)每个el-form-item上prop属性写规则的某一个rules下的第一个属性名.不是响应式.

5)给el-form,属性rules赋值响应式..

自定义规则

规则是rules的属性名的属性值.属性值用数组,内对象.message代表错误时输入框下的错误提示

自定义规则,也是数组内的某一条规则

callback调用,代表校验这一条结束..不是return.return结束的是这个函数.参数内会message一样.

value是v-model的属性值.不用报错误.当注册的时候无法跳转即可

注册前的预处理

需要在点击时执行,是否前几个校验通过.

ref赋给el-form拿到dom对象,点击时,拿到DOM对象,form.value是对象.

form对象的validate()函数会校验一遍,返回一个错误的promise对象,或者一个回调函数,前面写await,错误则不再执行.await+错误,停止执行,抛出错误.

点击时,校验成功后,需要将注册的给后台,以及跳转到登录.

报错在于,内部不知道是按需调入的方法,配置这些可以不报错.

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

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

相关文章

WS-BAN模型(细粒度图像分类)

WS-BAN模型&#xff08;细粒度图像分类&#xff09; 摘要Abstract1. WS-BAN1.1 文献摘要1.2 背景1.3 创新点1.4 WS-BAN方法1.4.1 弱监督注意学习1.4.2 注意力丢弃 1.5 实验1.5.1 数据集1.5.2 实施细节1.5.3 对比试验结果 2. Transformer代码学习3. 细粒度图像分类代码复现 摘要…

商店数据(八)

目录 57.后台权限表 58.推荐记录表 ​59.系统上传资源表 ​60.角色表 ​61.订单结算表 62.店铺表 63.店铺认证表 64.店铺申请&#xff08;移动端&#xff09;表 57.后台权限表 CREATE TABLE wat_privilgeid (privilegeod int(11) NOT NULL AUTO_INCREMENT COMMENT 自增…

时间序列模型(含python程序实现)

常用按时间顺序排列的一组随机变量来表示一个随机事件的时间序列&#xff0c;简记为 用表示该随机序列的n个有序观察值&#xff0c;称之为序列长度为n的观察值序列。 常用的时间序列模型 时间序列的预处理 拿到一个观察值序列后&#xff0c;首先要对它的纯随机性和平稳性进行…

分享开放原子AtomGit开源协作平台评测报告

AtomGit平台的总体介绍 开放原子开源基金会是致力于推动全球开源事业发展的非营利机构&#xff0c;于 2020 年 6 月在北京成立&#xff0c;由阿里巴巴、百度、华为、浪潮、360、腾讯、招商银行等多家龙头科技企业联合发起。目前有三个主要机构设置&#xff0c;技术监督委员会&…

09_Scala函数和对象

文章目录 函数和对象1.函数也是对象 scala中声明了一个函数 等价于声明一个函数对象2.将函数当作对象来用&#xff0c;也就是访问函数&#xff0c;但是不执行函数结果3.对象拥有数据类型(函数类型)&#xff0c;对象可以进行赋值操作4.函数对象类型的省略写法&#xff0c;也就是…

2024Xtu程设第一次练习题解

程设练习题谢大会专门查重 1.1531奇怪的数字 题目让我们从小到大输出1e6以内所有的答案&#xff0c;其实也没什么好的思路 就是将一个数n的所有位都拆出来&#xff0c;遍历这些位&#xff08;每次取一个x&#xff09;&#xff0c;然后通过作除法&#xff08;y n / x&#xf…

挤压激励注意力 SE | Squeeze-and-Excitation Networks

论文名称&#xff1a;《Squeeze-and-Excitation Networks》 论文地址&#xff1a;https://arxiv.org/pdf/1709.01507.pdf 代码地址&#xff1a; https://github.com/hujie-frank/SENet 卷积神经网络 (CNN) 的核心构建块是卷积运算符&#xff0c;它使网络能够通过在每一层的局…

杰发科技AC7840——CAN通信简介(6)_监听模式

参考&#xff1a;http://t.csdnimg.cn/AFFPC 0. 简介 7840支持4种扩展模式&#xff0c;其中监听模式。 监听模式概念 作用: 这里写的用于诊断&#xff0c;实际上我还没有用到&#xff0c;不太理解为啥可以用作诊断。 我的理解是&#xff0c;在多个总线下&#xff0c;使用监听…

Bug记录:AttributeError: module ‘numpy‘ has no attribute ‘object‘

使用Tensorflow进行模型训练时&#xff0c;之前都好用的&#xff0c;突然报错&#xff1a;AttributeError: module numpy has no attribute object。 问题原因&#xff1a;Numpy版本不兼容&#xff0c;我之前是1.24.4&#xff0c;后来又重装了好几个版本都不太行。 最终解决方…

verilog 从入门到看得懂---matlab 自动生成verilog

matlab 的强大不用多说&#xff0c;以前经常用simulink 生成c&#xff0c;最近尝试用simulink进行了verilog的生成&#xff0c;方法也很简单。 一个简单的示例如下。 1&#xff0c;新建一个模型文件&#xff0c;并且根据需要进行模型搭建 2.配置HDL生成模块 3.点击 generation…

基于Springboot的玩具租赁系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的玩具租赁系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&…

系统服务(22年国赛)—— DHCPDHCP Relay(中继)

前言&#xff1a;原文在我的博客网站中&#xff0c;持续更新数通、系统方面的知识&#xff0c;欢迎来访&#xff01; 系统服务&#xff08;22年国赛&#xff09;—— DHCP&&DHCP Relay(中继)https://myweb.myskillstree.cn/94.html 目录 一、题目 DHCP AppSrv 二…

【Burpsuite靶场】XSS专题精讲

【个人】&#xff1a;NEUQ大一学生 【专业】&#xff1a;通信工程 (Communication Engineering) 【个人方向】&#xff1a;网安、开发双管齐下 【座右铭】&#xff1a;真正的英雄主义,就是看清生活的真相后依然热爱生活 -- 罗曼.罗兰 一、认识XSS&#xff08;跨站脚本攻击&…

4.28总结

根据项目要求进行在线状态功能的实现&#xff08;还未真正实现&#xff0c;仅在数据库进行修改状态并与服务器断开连接&#xff09; 在登录界面时 此时服务器等待连接 连接成功后数据库里的在线状态进行更改 我设置了两种方式来进行改变状态 一&#xff1a; 通过不退出界面进…

基础动态规划 - 过河卒

过河卒 兵从A点走到B点的所有路径方案&#xff0c;且不能经过 “马能吃棋子”的格子。 如果没有马&#xff0c;那么这道题就是一个简单的从A点走到B点的所有路径情况的简单动态规划。 状态转移方程为 dp[i,j] dp[i - 1,j] dp[i,j - 1]。 但如果加上了马这个棋子&#xff0…

Day 21 LAMP架构和DNS域名

LAMP架构简介 针对不同的后端开发语言&#xff0c;使用不同的架构&#xff0c;后端项目开发语言有&#xff1a;Java&#xff0c;PHP&#xff0c;Python...... 针对于PHP项目 LAMP架构 LinuxApacheMysql/MariadbPhp LNMP架构 LinuxNginxMysql/MariadbPhp 针对于Java项目 w…

windows电脑改造为linux

有个大学用的旧笔记本电脑没啥用了&#xff0c;决定把它改成linux搭一个服务器&#xff1b; 一、linux安装盘制作 首先要有一个大于8G的U盘&#xff0c;然后去下载需要的linux系统镜像&#xff0c;我下的是ubuntu&#xff0c;这里自选版本 https://cn.ubuntu.com/download/d…

第三节课,后端登录【1】.1--本人

一、后端登录逻辑&#xff0c;检测账户密码是否合法及密码输入是否正确 视频链接&#xff1a; 网址&#xff1a; 第三节&#xff1a;【视频】后端登录逻辑&#xff0c;检测账户密码是否合法及密码输入是否正确视频链接&#xff1a;-CSDN博客 从5.1开始 这是一个Java方法&am…

新能源设备远程监控解决方案

新能源设备远程监控解决方案 在当今全球能源转型的大背景下&#xff0c;新能源设备的广泛应用已成为应对环境挑战、推动可持续发展的重要途径。然而&#xff0c;新能源设备的高效运维与管理却面临诸多挑战&#xff0c;尤其是在地域广阔、环境复杂的应用场景中&#xff0c;如何…

Ragas

文章目录 一、关于 Ragas二、安装&#x1f6e1;️三、快速使用 &#x1f525;Open Analytics &#x1f50d; 四、References五、生成综合测试集文档数据生成 六、使用您的测试集进行评估数据Metrics 指标评估 七、监控生产中的 RAG需要监控的方面 一、关于 Ragas Ragas 是 RAG…