诉称 发表于 2025-7-14 19:05:39

vue的笔记

一、构建的常用语句


[*]使用 vite 构建前端工程

[*]npm init vue@3.7.0

[*]下载 sass 依赖,注意这是个 开发依赖

[*]npm i sass -D

[*]下载 axios 异步插件

[*]npm i axios -S

[*]下载 ElementPlus 图形界面组件

[*]npm i element-plus -S

[*]下载 ElementPlus 图标组件

[*]npm i @element-plus/icons-vue -S

[*]下载 ECharts 图表界面组件

[*]npm i echarts -S

[*]下载 md5 加密依赖 防止 密码明文传送

[*]npm i ts-md5 -S

[*]下载 pinia 插件,防止刷新重置仓库

[*]npm i pinia-plugin-persist -S

[*]下载 数字滚动插件

[*]npm i vue3-count-to -S

二、各种请求格式


[*]get

[*]直接拼接:http://localhost:8080/getstudent/17
[*]params拼接:http://localhost:8080/getstudent?id=17

[*]delete(delete跟get相似,一般只在请求上直接拼接,不会携带data)

[*]直接拼接:http://localhost:8080/delstudent/17
[*]params拼接:http://localhost:8080/delstudent?id=17

[*]put

[*]带Json格式的参数axios.put('/api/user', { name: '张三', age: 18 })
[*]以表单格式发送(Content-Type:application/x-www-form-urlencoded):
axios.put('/api/user', qs.stringify({ name: '张三', age: 18 }))

[*]拼接同样可以,但不建议

[*]post

[*]带Json格式的参数axios.post('/api/user', { name: '张三', age: 18 })
[*]以表单格式发送(Content-Type:application/x-www-form-urlencoded):
axios.post('/api/user', qs.stringify({ name: '张三', age: 18 }))

[*]拼接同样可以,但不建议

代码实例:
request.ts:
import axios,{type AxiosInstance} from "axios";
import { ElMessage } from "element-plus";

const request:AxiosInstance = axios.create({
   /* http://db.etoak.com:9527 */
   baseURL:import.meta.env.VITE_APP_BASE_API,
   /* 超时时间 */
   timeout:5000,
})

request.interceptors.request.use(config=>{
   console.log('请求拦截器~~~~',config)
   return config
},error=>{
   return Promise.reject(error)
})

/* 设置响应拦截器 */
request.interceptors.response.use(Response=>{
   console.log('响应拦截器~~~~',Response)
   const {data} = Response
   if(data.code===200||data.flag){
       return Response
   }
   ElMessage.error(data.msg)
   return Promise.reject(data)
},error=>{
   const {message} = error
   if(message.indexOf('Network Error')!==-1){
       ElMessage.error('孩子,没联网')
   }else if(message.indexOf('参数')!==-1){
       ElMessage.error('参数不对')
   }
   return Promise.reject(error)
})
export default requestapi/dao.ts:
import request from "@/utils/request";

const PATH = '/testUser/'

export const login = (username: string, password: string) =>
   request({
       url: `${PATH}login?username=${username}&password=${password}`,
       /* get不能发送json */
       method: 'get',
   })

export const reg = (pojo: RegUser) =>
   request({
       url: `${PATH}add`,
       /* post可以发送json */
       method: 'post',
       data: pojo,
   })

export const UpdateById = (newPojo: UpdateUser | UpdateRole) =>
   request({
       url: `${PATH}update`,
       method: 'put',
       data: newPojo,
   })

export const removeById = (id: string) =>
   request({
       url: `${PATH}delete/${id}`,
       /* url:`${PATH}delete?id=`, */
       method: 'delete',
   })三、使用声明类文件让你的前端代码不爆红

​        在我之前的一段较为紧张的学习时期,我们在写前端的时候,不去写声明文件,来定义一些属性的接口,就导致,我们在使用这些属性的时候,会让我们的代码爆红,虽然这并不影响代码的执行,这种情况也一度让我忘记了,怎么去定义这样的接口类。
- 这种文件在 TypeScript 里叫做类型声明文件,英文名是:Type Declaration File。

- 通常以 .d.ts 结尾。

- 作用:专门用来声明类型(接口、类型别名、全局变量等),不包含实际的实现代码。declare interface Province{
   id:string,
   name:string
}
declare interface City{
   id:string,
   name:string
}
declare interface Area{
   id:string,
   name:string
}
declare interface CascadeUser{
   provinceId:string,
   cityId:string,
   areaId:string
}四、关于Echarts图标绘制

这里选择直接贴代码
script:
import { onMounted, onUnmounted, ref, reactive } from 'vue';
import * as echarts from 'echarts'
import 'echarts/theme/vintage'

/* 获取页面 DOM */
let mychart = ref<HTMLDivElement | undefined>()

let chart:any   /* 注意这里如果使用 ref 会导致 tooltip 中的指示器失效! */

/* 此函数用来绘制图表 */
const initChart = () => {
   /* 设置初始化位置,也就是绘制在哪里 */
   chart = echarts.init(mychart.value,'vintage')
   /* 加载配置项 配置项中常见的配置项一定要明确其功能,由于配置项众多,不要求逐个记住,但是要
   懂得如何使用 官方 API 文档查阅 测试,注意只要配置项书写错误,则无报错机制,图表不显示 */
   chart.setOption({
   /*
   这里是图标各类数据
   */
   })
}
/* 页面真实 DOM 覆盖虚拟 DOM,全部渲染完毕开始绘制 ECharts 图表 */
onMounted(()=>{
   initChart() /* 绘制图表 */
})
/* 当组件销毁前重置 图表对象,防止切换过程中缓存误导 */
onUnmounted(()=>{
   if(!chart) return
   chart.dispose() /* ECharts 自带函数,强制销毁当前对象 */
   chart = null    /* 重置为 null */
})
/* 添加随着浏览器的拖动图表自适应 */
window.addEventListener("resize", function () {
   if( chart ) chart.resize()
   /* 如果存在多个则依次调用 */
   /* myChartA.resize();
   myChartB.resize(); */
})template:
   
来源:豆瓜网用户自行投稿发布,如果侵权,请联系站长删除
页: [1]
查看完整版本: vue的笔记