找回密码
 立即注册
首页 业界区 安全 vue的笔记

vue的笔记

静轾 2025-9-26 10:48:01
一、构建的常用语句


  • 使用 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:
  1. import axios,{type AxiosInstance} from "axios";
  2. import { ElMessage } from "element-plus";
  3. const request:AxiosInstance = axios.create({
  4.    /* http://db.etoak.com:9527 */
  5.    baseURL:import.meta.env.VITE_APP_BASE_API,
  6.    /* 超时时间 */
  7.    timeout:5000,
  8. })
  9. request.interceptors.request.use(config=>{
  10.    console.log('请求拦截器~~~~',config)
  11.    return config
  12. },error=>{
  13.    return Promise.reject(error)
  14. })
  15. /* 设置响应拦截器 */
  16. request.interceptors.response.use(Response=>{
  17.    console.log('响应拦截器~~~~',Response)
  18.    const {data} = Response
  19.    if(data.code===200||data.flag){
  20.        return Response
  21.    }
  22.    ElMessage.error(data.msg)
  23.    return Promise.reject(data)
  24. },error=>{
  25.    const {message} = error
  26.    if(message.indexOf('Network Error')!==-1){
  27.        ElMessage.error('孩子,没联网')
  28.    }else if(message.indexOf('参数')!==-1){
  29.        ElMessage.error('参数不对')
  30.    }
  31.    return Promise.reject(error)
  32. })
  33. export default request
复制代码
api/dao.ts:
  1. import request from "@/utils/request";
  2. const PATH = '/testUser/'
  3. export const login = (username: string, password: string) =>
  4.    request({
  5.        url: `${PATH}login?username=${username}&password=${password}`,
  6.        /* get不能发送json */
  7.        method: 'get',
  8.    })
  9. export const reg = (pojo: RegUser) =>
  10.    request({
  11.        url: `${PATH}add`,
  12.        /* post可以发送json */
  13.        method: 'post',
  14.        data: pojo,
  15.    })
  16. export const UpdateById = (newPojo: UpdateUser | UpdateRole) =>
  17.    request({
  18.        url: `${PATH}update`,
  19.        method: 'put',
  20.        data: newPojo,
  21.    })
  22. export const removeById = (id: string) =>
  23.    request({
  24.        url: `${PATH}delete/${id}`,
  25.        /* url:`${PATH}delete?id=`, */
  26.        method: 'delete',
  27.    })
复制代码
三、使用声明类文件让你的前端代码不爆红

​        在我之前的一段较为紧张的学习时期,我们在写前端的时候,不去写声明文件,来定义一些属性的接口,就导致,我们在使用这些属性的时候,会让我们的代码爆红,虽然这并不影响代码的执行,这种情况也一度让我忘记了,怎么去定义这样的接口类。
  1. - 这种文件在 TypeScript 里叫做类型声明文件,英文名是:Type Declaration File。
  2. - 通常以 .d.ts 结尾。
  3. - 作用:专门用来声明类型(接口、类型别名、全局变量等),不包含实际的实现代码。
复制代码
  1. declare interface Province{
  2.    id:string,
  3.    name:string
  4. }
  5. declare interface City{
  6.    id:string,
  7.    name:string
  8. }
  9. declare interface Area{
  10.    id:string,
  11.    name:string
  12. }
  13. declare interface CascadeUser{
  14.    provinceId:string,
  15.    cityId:string,
  16.    areaId:string
  17. }
复制代码
四、关于Echarts图标绘制

这里选择直接贴代码
script:
  1. import { onMounted, onUnmounted, ref, reactive } from 'vue';
  2. import * as echarts from 'echarts'
  3. import 'echarts/theme/vintage'
  4. /* 获取页面 DOM */
  5. let mychart = ref<HTMLDivElement | undefined>()
  6. let chart:any   /* 注意这里如果使用 ref 会导致 tooltip 中的指示器失效! */
  7. /* 此函数用来绘制图表 */
  8. const initChart = () => {
  9.    /* 设置初始化位置,也就是绘制在哪里 */
  10.    chart = echarts.init(mychart.value,'vintage')
  11.    /* 加载配置项 配置项中常见的配置项一定要明确其功能,由于配置项众多,不要求逐个记住,但是要
  12.    懂得如何使用 官方 API 文档查阅 测试,注意只要配置项书写错误,则无报错机制,图表不显示 */
  13.    chart.setOption({
  14.    /*
  15.    这里是图标各类数据
  16.    */
  17.    })
  18. }
  19. /* 页面真实 DOM 覆盖虚拟 DOM,全部渲染完毕开始绘制 ECharts 图表 */
  20. onMounted(()=>{
  21.    initChart() /* 绘制图表 */
  22. })
  23. /* 当组件销毁前重置 图表对象,防止切换过程中缓存误导 */
  24. onUnmounted(()=>{
  25.    if(!chart) return
  26.    chart.dispose() /* ECharts 自带函数,强制销毁当前对象 */
  27.    chart = null    /* 重置为 null */
  28. })
  29. /* 添加随着浏览器的拖动图表自适应 */
  30. window.addEventListener("resize", function () {
  31.    if( chart ) chart.resize()
  32.    /* 如果存在多个则依次调用 */
  33.    /* myChartA.resize();
  34.    myChartB.resize(); */
  35. })
复制代码
template:
  1.    
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

前天 01:05

举报

收藏一下   不知道什么时候能用到
您需要登录后才可以回帖 登录 | 立即注册