官方脚手架 “create-vue” 脚手架创建 Vue 3 项目

本文介绍了在Vue3项目中使用Pinia进行状态管理,结合VueRouter和TypeScript增强路由功能。推荐了ElementPlus组件库和IconPark图标库,以及axios作为网络请求库,并详细展示了axios的拦截器配置。此外,还提到了VueDevtools浏览器插件和Pinia的持久化存储插件pinia-plugin-persist。
摘要由CSDN通过智能技术生成

查看官方文档

1、选择功能(创建时选择
  • TypeScript
  • Vue Router
  • Pinia

《Pinia官方文档》

推荐博主文章:

  1. 《Pinia详细使用步骤(0基础)》
  2. 《新一代状态管理工具 – Pinia 上手指南》
  • ESLint
  • Prettier
2、选择VSCode插件
  • Vue Language Features (Volar)
  • TypeScript Vue Plugin (Volar)
  • Vue VSCode Snippets
  • ESLint
3、选择组件库

推荐 Element Plus

4、选择图标库

推荐 IconPark

5、选择字体

自用:iconfont字体库

6、选择网络请求库

推荐 axios

/**
 * 封装axios配置
 * 包括axios实例化、拦截器、登录跳转、消息提示和错误处理
 */

import router from '@/router';
import axios from 'axios';
import { ElMessage } from 'element-plus';

// 枚举返回结果
enum msg{
  "校验通过" = 200,
  "请求异常" = 400,
  "登录超时" = 401,
  "密码错误" = 403,
  "账号错误" = 404,
  "服务器异常" = 500
}

/**
 * 创建axios实例 + 基础配置
 */
const instance = axios.create({
  baseURL: 'http://127.0.0.1:4523/m1/2301781-0-default',
  timeout: 2000,
  headers: {
    "Content-Type": "application/json; charset=utf-8"
  }
})

/**
 * 请求拦截器
 */
instance.interceptors.request.use(config=>{
  config.headers = config.headers || {};

  // 添加token到请求头
  config.headers.token = localStorage.getItem('token') || ''

  console.log('请求参数:', config);
  return config;
}, error => {
  console.log('请求错误:', error);
  return Promise.reject(error)
})

/**
 * 响应拦截器
 */
instance.interceptors.response.use(res=>{
  const code:number = res.data.code;

  if (code != 200) {
    // 消息提示
    ElMessage({
      showClose: true,
      message: msg[code],
      type: 'error',
      center: true
    })
    
    // 登录过期:重置token,重定向至登录页
    if (code == 401) {
      localStorage.setItem('token', '');
      router.push("/login")
    }
    return Promise.reject(res);
  }

  // 将token存储起来
  if (res.data.data.token) {
    localStorage.setItem('token', JSON.stringify(res.data.data.token));
  }

  console.log('响应结果:', res);
  return res;
}, error=>{
  console.log('响应错误:', error);
  return Promise.reject(error);
})

// 导出实例
export default instance
  • 接口请求定义(/src/http/api.ts)
/**
 * 接口请求集合
 */

import instance from ".";

interface loginData {
  identity: string,
  userId: string,
  password: string
}

export const login = (data: loginData) => instance({
  url: "/loginVerify",
  method: "post",
  data
})
7、下载浏览器插件

Vue Devtools

8、安装token解析插件

推荐博主文章

9、安装pinia-plugin-persist插件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

红油曲奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值