Vue3--V3+vite+ts 項目使用mockjs

1、安裝mockjs

yarn add mockjs -S 或 npm i mockjs -D

2、安裝vite-plugin-mock

npm i vite-plugin-mock -D

3、在src目錄下創(chuàng)建mock文件夾,在文件夾內(nèi)創(chuàng)建login.ts等文件,并在文件夾內(nèi)放置以下內(nèi)容(注:URL要和真實請求地址保持一致)

import { MockMethod } from "vite-plugin-mock";
export default [
  {
    url: "/mock-login", // 注意,這里只能是string格式
    method: "post",
    response: () => {
      return {
        menusList: [1,2,3,4,],
      };
    },
  },
] as MockMethod[]

4、在vite.config.ts進(jìn)行個人配置

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { viteMockServe } from 'vite-plugin-mock'

import path from "path"

export default defineConfig({
  plugins:[
    vue(),
    viteMockServe({
      mockPath: "./src/mock/", // 指向mock下的文件
      localEnabled: true // 是否開啟開發(fā)環(huán)境
    }
  ],
  resolve: {
    alias: {
      '@': path.resolve(__dirname, './src')
    }
  },
})

配置路徑別名時需要在tsconfig.json文件下配置
{
  "paths": {
    "@/*": ["src/*"]
  }
}

5、下載axios

npm i axios

6、封裝請求,創(chuàng)建axios文件夾,文件夾下創(chuàng)建index.ts文件,文件內(nèi)放置以下內(nèi)容

import axios from 'axios'
// 創(chuàng)建一個 axios 實例
const service = axios.create({
    baseURL: '', // 所有的請求地址前綴部分
    timeout: 60000, // 請求超時時間毫秒
    withCredentials: true, // 異步請求攜帶cookie
    // headers: {
        // 設(shè)置后端需要的傳參類型
        // 'Content-Type': 'application/json',
        // 'token': 'your token',
        // 'X-Requested-With': 'XMLHttpRequest',
    // },
})
// 添加請求攔截器
service.interceptors.request.use(
    function (config) {
        // 在發(fā)送請求之前做些什么
        return config
    },
    function (error) {
        // 對請求錯誤做些什么
        console.error('請求錯誤',error)
        return Promise.reject(error)
    }
)
// 添加響應(yīng)攔截器
service.interceptors.response.use(
    function (response) {
        // 對響應(yīng)數(shù)據(jù)做點什么
        return response.data
    },
    function (error) {
        return Promise.reject(error)
    }
)

export default service

8、使用封裝的請求:創(chuàng)建api文件夾,例:login.ts,文件夾下放置以下內(nèi)容

// 導(dǎo)入axios實例
import httpRequest from '@/axios/index'
export function login() {
    return httpRequest({
        url: '/mock-login',
        method: 'post',
    })
}
export default {
    login
}

9、頁面內(nèi)使用

import { login } from "@/api/login/index";
login().then((res) => {
  console.log("login", res);
});

效果如下:


請求截圖

打印如下:


打印截圖
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容