最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

在使用Vue3開(kāi)發(fā)的時(shí)候,有時(shí)候沒(méi)有后端或者后端接口還沒(méi)有準(zhǔn)備好,那就需要使用Mock模擬數(shù)據(jù)便于前端開(kāi)發(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中會(huì)報(bào)錯(cuò)

找不到模塊“mockjs”或其相應(yīng)的類(lèi)型聲明。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'

編寫(xiě)模擬接口

import Mock from 'mockjs'

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


Mock.mock("/mock/getGoodsList","get", {
    code: 200, 
    message:"請(qǐng)求成功",
    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"
    }
})

//請(qǐng)求攔截
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

編寫(xiě)axios的請(qǐng)求接口

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",
    })
}

頁(yè)面中使用axios請(qǐng)求接口

<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ái)管理系統(tǒng)</h2>
                <el-form-item label="賬號(hào):" 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: "請(qǐng)輸入你的賬號(hào)",
          trigger: "blur",
        },
        {
          min: 3,
          max: 10,
          message: "賬號(hào)的長(zhǎng)度在3到10之間",
          trigger: "blur",
        },
      ],
      password: [
        {
          required: true,
          message: "請(qǐng)輸入你的密碼",
          trigger: "blur",
        },
        {
          min: 3,
          max: 10,
          message: "密碼的長(zhǎng)度在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;
      // 對(duì)表單的內(nèi)容進(jìn)行驗(yàn)證
      // valid布爾類(lèi)型,為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)頁(yè)面,首頁(yè)
            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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • vue-calendar-component 封裝多日期選擇組件的實(shí)例代碼

    vue-calendar-component 封裝多日期選擇組件的實(shí)例代碼

    這篇文章主要介紹了vue-calendar-component 封裝多日期選擇組件,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • vue.js入門(mén)教程之綁定class和style樣式

    vue.js入門(mén)教程之綁定class和style樣式

    小編之前介紹了通過(guò)vue.js計(jì)算屬性,不知道大家都學(xué)會(huì)了嗎。那這篇文章中我們將一起學(xué)習(xí)vue.js實(shí)現(xiàn)綁定class和style樣式,有需要的朋友們可以參考借鑒。
    2016-09-09
  • 在nuxt使用vueX代替storage的實(shí)現(xiàn)方案

    在nuxt使用vueX代替storage的實(shí)現(xiàn)方案

    這篇文章主要介紹了在nuxt使用vueX代替storage的實(shí)現(xiàn)方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue鍵盤(pán)事件keyup、keydown的作用

    vue鍵盤(pán)事件keyup、keydown的作用

    這篇文章主要介紹了vue鍵盤(pán)事件keyup、keydown的作用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • vue-cli腳手架搭建的項(xiàng)目去除eslint驗(yàn)證的方法

    vue-cli腳手架搭建的項(xiàng)目去除eslint驗(yàn)證的方法

    今天小編就為大家分享一篇vue-cli腳手架搭建的項(xiàng)目去除eslint驗(yàn)證的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • Vue+Vant實(shí)現(xiàn)7天日歷展示并在切換日期時(shí)實(shí)時(shí)變換功能

    Vue+Vant實(shí)現(xiàn)7天日歷展示并在切換日期時(shí)實(shí)時(shí)變換功能

    本文介紹了如何利用Vue和Vant框架結(jié)合moment.js插件來(lái)實(shí)現(xiàn)一個(gè)7天日歷展示功能,在這個(gè)功能中,用戶(hù)可以在切換日期時(shí)看到界面的實(shí)時(shí)變化,此外,文章還提供了代碼實(shí)現(xiàn)和效果測(cè)試的詳細(xì)步驟,幫助開(kāi)發(fā)者能夠順利完成類(lèi)似的項(xiàng)目開(kāi)發(fā)
    2024-10-10
  • Vue3實(shí)現(xiàn)動(dòng)態(tài)路由與手動(dòng)導(dǎo)航

    Vue3實(shí)現(xiàn)動(dòng)態(tài)路由與手動(dòng)導(dǎo)航

    這篇文章主要為大家詳細(xì)介紹了如何在?Vue?3?中實(shí)現(xiàn)動(dòng)態(tài)路由注冊(cè)和手動(dòng)導(dǎo)航,確保用戶(hù)訪問(wèn)的頁(yè)面與權(quán)限對(duì)應(yīng),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-12-12
  • Vue Element UI + OSS實(shí)現(xiàn)上傳文件功能

    Vue Element UI + OSS實(shí)現(xiàn)上傳文件功能

    這篇文章主要為大家詳細(xì)介紹了Vue Element UI + OSS實(shí)現(xiàn)上傳文件功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • vue-quill-editor富文本編輯器簡(jiǎn)單使用方法

    vue-quill-editor富文本編輯器簡(jiǎn)單使用方法

    這篇文章主要為大家詳細(xì)介紹了vue-quill-editor富文本編輯器簡(jiǎn)單使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • vue Aes加解密實(shí)踐

    vue Aes加解密實(shí)踐

    文章主要講述了在Vue項(xiàng)目中安裝并使用crypto-js進(jìn)行AES加解密的操作,提及了與RSA加密的不同,并提到因密鑰長(zhǎng)度問(wèn)題可能需要修改源碼,最后強(qiáng)調(diào)內(nèi)容為個(gè)人經(jīng)驗(yàn),僅供參考
    2026-05-05

最新評(píng)論

淮安市| 平武县| 南宫市| 南充市| 根河市| 东至县| 云梦县| 天门市| 河南省| 太和县| 邯郸市| 和龙市| 鹰潭市| 江山市| 花垣县| 烟台市| 泗洪县| 龙江县| 宽甸| 尚义县| 甘南县| 乌鲁木齐县| 临海市| 顺义区| 洛南县| 工布江达县| 错那县| 张家界市| 广丰县| 明光市| 攀枝花市| 龙岩市| 万全县| 乐陵市| 临汾市| 安阳市| 朔州市| 利津县| 陆川县| 涞水县| 湘乡市|