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

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

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

在使用Vue3開發(fā)的時候,有時候沒有后端或者后端接口還沒有準備好,那就需要使用Mock模擬數(shù)據便于前端開發(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中會報錯

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

我是使用pnpm、vite新建的vue3項目,只需要在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實例
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
})

// 響應攔截
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;
      // 對表單的內容進行驗證
      // valid布爾類型,為true表示驗證成功,反之
      formEl.validate((valid) => {
        if (valid) {
          // console.log("submit!");
          login(ruleForm).then((res) => {
             console.log(res);
            // 將token進行保存
            localStorage.setItem("token", res.data.token);
            // 跳轉頁面,首頁
            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>

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

相關文章

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

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

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

    vue.js入門教程之綁定class和style樣式

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

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

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

    vue鍵盤事件keyup、keydown的作用

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

    vue-cli腳手架搭建的項目去除eslint驗證的方法

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

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

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

    Vue3實現(xiàn)動態(tài)路由與手動導航

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

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

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

    vue-quill-editor富文本編輯器簡單使用方法

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

    vue Aes加解密實踐

    文章主要講述了在Vue項目中安裝并使用crypto-js進行AES加解密的操作,提及了與RSA加密的不同,并提到因密鑰長度問題可能需要修改源碼,最后強調內容為個人經驗,僅供參考
    2026-05-05

最新評論

上饶县| 兴山县| 临泉县| 尼玛县| 昌邑市| 惠水县| 额敏县| 无锡市| 黎平县| 阿鲁科尔沁旗| 新化县| 买车| 砀山县| 凤凰县| 崇阳县| 民勤县| 昌乐县| 奉贤区| 张家港市| 广水市| 阆中市| 普格县| 璧山县| 浦北县| 日土县| 普宁市| 都匀市| 长岛县| 北安市| 朝阳区| 平昌县| 灌阳县| 清远市| 大英县| 将乐县| 育儿| 扎囊县| 云梦县| 宜春市| 敦煌市| 永修县|