欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vite+Vue3使用MockJS的實(shí)現(xiàn)示例

 更新時(shí)間:2024年01月02日 11:21:51   作者:楓葉梨花  
寫一些純前端的項(xiàng)目時(shí),自己造數(shù)據(jù)有些麻煩,于是我們可以利用mock造一些簡單的數(shù)據(jù),來滿足我們的需求,本文主要介紹了Vite+Vue3使用MockJS的實(shí)現(xiàn)示例,感興趣的可以了解一下

在使用Vue3開發(fā)的時(shí)候,有時(shí)候沒有后端或者后端接口還沒有準(zhǔn)備好,那就需要使用Mock模擬數(shù)據(jù)便于前端開發(fā)。

現(xiàn)在就記錄一下Vite+Vue3的環(huán)境下如果使用MockJS。

版本

  • vue 3.3.11
  • mockjs 1.1.0
  • axios 1.6.3

Mockjs配置使用

使用pnpm命令安裝Mockjs

pnpm install axios
pnpm install mockjs

mock模擬接口

src目錄下新建文件夾mock,并新建文件index.ts,引入mockjs

import Mock from 'mockjs'

直接在上面引入,在vscode中會報(bào)錯(cuò)

找不到模塊“mockjs”或其相應(yīng)的類型聲明。ts(2307)

我是使用pnpm、vite新建的vue3項(xiàng)目,只需要在src目錄下的vite-env.d.ts文件下,加入以下配置即可

/// <reference types="vite/client" />

declare module 'mockjs'

main文件下引入mockjs

main.ts文件下引入mockjs

import './mock/index'

編寫模擬接口

import Mock from 'mockjs'

Mock.mock("/mock/login","post", {code: 200, token:"login success token"});


Mock.mock("/mock/getGoodsList","get", {
    code: 200, 
    message:"請求成功",
    data:[
        {
            id:1,
            introduce:"旺仔牛奶很好喝?。?!",
            title:"旺仔牛奶",
            userId:1
        },
        {
            id:2,
            introduce:"旺旺碎碎冰很冰很好吃?。?!",
            title:"旺旺碎碎冰",
            userId:1
        },
        {
            id:3,
            introduce:"喜之郎品牌很好吃?。。?,
            title:"喜之郎",
            userId:1
        }
        ,
        {
            id:4,
            introduce:"衛(wèi)龍辣條很好吃?。?!",
            title:"衛(wèi)龍辣條",
            userId:1
        }
        ,
        {
            id:5,
            introduce:"德芙巧克力很好吃!?。?,
            title:"德芙巧克力",
            userId:1
        }
        ,
        {
            id:6,
            introduce:"伊利牛奶很好喝?。?!",
            title:"伊利牛奶",
            userId:1
        }
    ]
});

axios配置使用

配置axios

import axios from 'axios'

//創(chuàng)建axios實(shí)例
const service = axios.create({
    baseURL:"/mock",
    timeout:5000,
    headers:{
        "Content-Type":"application/json;charset=utf-8"
    }
})

//請求攔截
service.interceptors.request.use((config)=>{
    config.headers=config.headers || {}
    if(localStorage.getItem("token")){
        config.headers.token = localStorage.getItem("token") || ""
    }
    return config
})

// 響應(yīng)攔截
service.interceptors.response.use((res)=>{
    const code:number = res.data.code
    if(code != 200){
        return Promise.reject(res.data)
    }
    return res
},(err)=>{
    console.log(err)
})

export default service

編寫axios的請求接口

import service from ".";
import { LoginData } from "../type/login";

//登錄接口
export function login(data:LoginData) {
    return service({
        url:"/login",
        method:"post",
        data
    })
}

//獲取商品接口
export function getGoodsList(){
    return service({
        url:"/getGoodsList",
        method:"get",
    })
}

頁面中使用axios請求接口

<template>
    <div class="login-box">
        <div class="login-box">
            <el-form ref="ruleFormRef" :model="ruleForm" status-icon :rules="rules" label-width="80px"
                class="login-ruleForm">
                <h2>后臺管理系統(tǒng)</h2>
                <el-form-item label="賬號:" prop="username">
                    <el-input v-model="ruleForm.username" autocomplete="off" />
                </el-form-item>

                <el-form-item label="密碼:" prop="password">
                    <el-input v-model="ruleForm.password" type="password" autocomplete="off" />
                </el-form-item>
                <el-form-item>
                    <el-button class="loginBtn" type="primary" @click="submitForm(ruleFormRef)">登錄</el-button>
                    <el-button class="loginBtn" @click="resetForm">重置</el-button>
                </el-form-item>
            </el-form>
        </div>
    </div>
</template>
 
<script lang="ts" setup>
import { reactive,ref } from 'vue';
import { LoginData } from '../type/login';
import type { FormInstance } from "element-plus";
import { login } from "../request/api";
import { useRouter } from "vue-router";

const ruleForm = reactive<LoginData>({username:"",password:""});

const rules = {
      username: [
        {
          required: true,
          message: "請輸入你的賬號",
          trigger: "blur",
        },
        {
          min: 3,
          max: 10,
          message: "賬號的長度在3到10之間",
          trigger: "blur",
        },
      ],
      password: [
        {
          required: true,
          message: "請輸入你的密碼",
          trigger: "blur",
        },
        {
          min: 3,
          max: 10,
          message: "密碼的長度在3到10之間",
          trigger: "blur",
        },
      ],
    };


    const resetForm = () => {
        ruleForm.username = "";
        ruleForm.password = "";
    };

    const ruleFormRef = ref<FormInstance>();
    const router=useRouter()//-->$router
    const submitForm = (formEl: FormInstance | undefined) => {
      if (!formEl) return;
      // 對表單的內(nèi)容進(jìn)行驗(yàn)證
      // valid布爾類型,為true表示驗(yàn)證成功,反之
      formEl.validate((valid) => {
        if (valid) {
          // console.log("submit!");
          login(ruleForm).then((res) => {
             console.log(res);
            // 將token進(jìn)行保存
            localStorage.setItem("token", res.data.token);
            // 跳轉(zhuǎn)頁面,首頁
            router.push('/')
          });
        } else {
          console.log("error submit!");
          return false;
        }
      });
      // console.log(formEl);
    };
</script>

<style lang="scss" scoped>
.login-box {
    width: 100%;
    height: 100%;
    background: url('../assets/bg.jpg');

    padding: 1px;
    .login-ruleForm{
        width: 500px;
        margin: 200px auto;
        background-color: #fff;
        padding: 40px;
        border-radius: 20px;
    }
    .loginBtn {
        width: 48%;
    }
    h2 {
        margin-bottom: 10px;
    }
}
</style>

到此這篇關(guān)于Vite+Vue3使用MockJS的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)Vite Vue3使用MockJS內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Vue接口封裝的完整步驟記錄

    Vue接口封裝的完整步驟記錄

    對于中小型企業(yè),vue應(yīng)用越來越多,學(xué)習(xí)vue相對于react的成本要低點(diǎn),入門相對簡單。這篇文章主要給大家介紹了關(guān)于Vue接口封裝的相關(guān)資料,需要的朋友可以參考下
    2021-05-05
  • Vue 組件傳值幾種常用方法【總結(jié)】

    Vue 組件傳值幾種常用方法【總結(jié)】

    本文是腳本之家小編給大家整理的vue組件傳值幾種常用方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2018-05-05
  • Vue3如何自定義v-permission權(quán)限指令

    Vue3如何自定義v-permission權(quán)限指令

    這篇文章主要為大家詳細(xì)介紹了Vue3如何編寫一個(gè)?v-permission?指令來根據(jù)用戶權(quán)限動(dòng)態(tài)控制元素的渲染,感興趣的小伙伴可以參考一下
    2024-12-12
  • vue-resourse將json數(shù)據(jù)輸出實(shí)例

    vue-resourse將json數(shù)據(jù)輸出實(shí)例

    這篇文章主要為大家詳細(xì)介紹了vue-resourse將json數(shù)據(jù)輸出實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • vue使用localStorage保存登錄信息 適用于移動(dòng)端、PC端

    vue使用localStorage保存登錄信息 適用于移動(dòng)端、PC端

    這篇文章主要為大家詳細(xì)介紹了vue使用localStorage保存登錄信息 適用于移動(dòng)端、PC端,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 關(guān)于vue3編寫掛載DOM的插件問題

    關(guān)于vue3編寫掛載DOM的插件問題

    這篇文章主要介紹了vue3編寫掛載DOM的插件的問題,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-07-07
  • 如何解決ElementUI導(dǎo)航欄重復(fù)點(diǎn)菜單報(bào)錯(cuò)問題

    如何解決ElementUI導(dǎo)航欄重復(fù)點(diǎn)菜單報(bào)錯(cuò)問題

    這篇文章主要介紹了如何解決ElementUI導(dǎo)航欄重復(fù)點(diǎn)菜單報(bào)錯(cuò)問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Vue中計(jì)算屬性computed的示例解讀

    Vue中計(jì)算屬性computed的示例解讀

    計(jì)算屬性和普通屬性一樣是在模板中綁定計(jì)算屬性的,當(dāng)data中對應(yīng)數(shù)據(jù)發(fā)生改變時(shí),計(jì)算屬性的值也會發(fā)生改變。下面這篇文章主要給大家介紹了關(guān)于Vue中計(jì)算屬性computed的相關(guān)資料,需要的朋友可以參考下。
    2017-07-07
  • vue如何實(shí)現(xiàn)簡易的彈出框

    vue如何實(shí)現(xiàn)簡易的彈出框

    這篇文章主要介紹了vue如何實(shí)現(xiàn)簡易的彈出框,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 使用vue制作探探滑動(dòng)堆疊組件的實(shí)例代碼

    使用vue制作探探滑動(dòng)堆疊組件的實(shí)例代碼

    探探的堆疊滑動(dòng)組件起到了關(guān)鍵的作用,下面就來看看如何用vue寫一個(gè)探探的堆疊組件,感興趣的朋友一起看看吧
    2018-03-03

最新評論