vite+vue3中使用mock模擬數(shù)據(jù)問題
1.安裝mockjs和vite-plugin-mock
npm i mockjs vite-plugin-mock --save-dev
2.在vite.config.ts文件中配置
vite-plugin-mock使用方式
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { viteMockServe } from 'vite-plugin-mock'
// https://vitejs.dev/config/
export default defineConfig({
plugins: [vue(),
viteMockServe({
supportTs:false,
logger: false,
mockPath: "./mock/"
})
]
})vite-plugin-mock 中的配置內(nèi)容的含義
{
supportTs?: boolean; --是否讀取ts文件模塊,設(shè)置為true時不能讀取js文件
logger?:boolean; --是否在控制臺顯示請求日志
mockPath?: string;? --設(shè)置模擬數(shù)據(jù)的存儲文件夾,如果不是index.js需要寫明完整路徑
ignore?: RegExp | ((fileName: string) => boolean);--讀取文件時忽略指定格式的文件
watchFiles?: boolean;--是否監(jiān)視mockPath文件夾內(nèi)文件的修改
localEnabled?: boolean;--設(shè)置是否啟用本地 xxx.ts 文件,不要在生產(chǎn)環(huán)境中打開它.設(shè)置為 false 將禁用 mock 功能
ignoreFiles?: string[]; --讀取文件時忽略的文件
configPath?: string;--設(shè)置模擬讀取的數(shù)據(jù)條目。 當(dāng)文件存在并且位于項(xiàng)目根目錄中時,將首先讀取并使用該文件。 配置文件返回一個數(shù)組
prodEnabled?: boolean;--設(shè)置打包是否啟用 mock 功能
injectFile?: string;--如果生產(chǎn)環(huán)境開啟了 mock 功能,即prodEnabled=true.則該代碼會被注入到injectFile對應(yīng)的文件的底部。默認(rèn)為main.{ts,js}。這樣做的好處是,可以動態(tài)控制生產(chǎn)環(huán)境是否開啟 mock 且在沒有開啟的時候 mock.js 不會被打包。如果代碼直接寫在main.ts內(nèi),則不管有沒有開啟,最終的打包都會包含mock.js
injectCode?: string;--injectCode代碼注入的文件,默認(rèn)為項(xiàng)目根目錄下src/main.{ts,js}
}3.在根目錄下創(chuàng)建mock文件夾
新建文件夾mock/index.js
export default [{
type:'get',
url:'/user/login',
response: () => {
return {isAuth:true}
}
},{
type:'get',
url:'/user/menu',
response: () => {
return {menusList:[{
id:'/sysManagent',
title:'系統(tǒng)管理',
subMenuList:[
{
id:'/userList',
title:'用戶管理',
path:'/user/manage'
},
{
id:'/roleList',
title:'角色管理',
path:'/user/role'
},
{
id:'/permissionList',
title:'權(quán)限管理',
path:'/user/permission'
}
]
},{
id:'businessManagent',
title:'業(yè)務(wù)管理',
subMenuList:[
{
id:'/businessList',
title:'業(yè)務(wù)邏輯'
}
]
}],statusCode:200}
}
}]4.在文件中調(diào)用
<template>
<div class="aside">
<div class="collpase-btn" @click="collpaseMenu">
<el-icon><fold /></el-icon>
</div>
<el-menu
active-text-color="#ffd04b"
background-color="#545c64"
class="el-menu-vertical-demo"
:default-active="router.path"
text-color="#fff"
:collapse="store.state.isCollapse"
@open="handleOpen"
@close="handleClose"
:router="true"
>
<el-sub-menu
:index="item.id"
v-for="item in menus.mensList"
:key="item.id"
>
<template #title>
<el-icon><grid /></el-icon>
<span>{{ item.title }}</span>
</template>
<el-menu-item :index="it.id" v-for="it in item.subMenuList">
{{ it.title }}
</el-menu-item>
</el-sub-menu>
</el-menu>
</div>
</template>
<script lang="ts">
import axios from 'axios'
import { defineComponent, onMounted, reactive } from 'vue'
import { useRoute } from 'vue-router'
import { useStore } from 'vuex'
export default defineComponent({
name: 'Aside',
setup() {
const store = useStore()
const router = useRoute()
const mensList: any = []
let menus = reactive({ mensList })
const handleOpen = (key: string, keyPath: string[]) => {}
const handleClose = (key: string, keyPath: string[]) => {}
const collpaseMenu = () => {
store.dispatch('collpaseChange')
}
onMounted(() => {
axios.get('/user/menu').then((res) => {
console.log(res);
menus.mensList = res.data.menusList
})
})
return {
handleOpen,
handleClose,
collpaseMenu,
store,
menus,
router
}
},
})
</script>
<style lang="scss" scoped>
.el-menu-item.is-active {
background-color: var(--el-menu-hover-bg-color);
}
.collpase-btn {
text-align: center;
width: 100%;
padding: 10px 0px;
cursor: pointer;
.el-icon {
color: white;
font-size: 24px;
}
}
</style>
5.其他
如果mock文件夾建在src文件目錄下,需要修改tsconfig.json文件
"include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue","src/mock/**/*.ts"],
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue3?element-plus實(shí)現(xiàn)圖片預(yù)覽功能實(shí)例
這篇文章主要給大家介紹了關(guān)于vue3?element-plus實(shí)現(xiàn)圖片預(yù)覽功能的相關(guān)資料,在項(xiàng)目中我們經(jīng)常會碰到圖片預(yù)覽的功能需求,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2023-09-09
Vue.js桌面端自定義滾動條組件之美化滾動條VScroll
這篇文章主要給大家介紹了關(guān)于Vue.js桌面端自定義滾動條組件之美化滾動條VScroll的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Vue 電商后臺管理項(xiàng)目階段性總結(jié)(推薦)
這篇文章主要介紹了Vue 電商后臺管理項(xiàng)目階段性總結(jié),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08
淺談Vue內(nèi)置component組件的應(yīng)用場景
這篇文章主要介紹了淺談Vue內(nèi)置component組件的應(yīng)用場景,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-03-03
Vue表格首列相同數(shù)據(jù)合并實(shí)現(xiàn)方法
這篇文章主要介紹了Vue實(shí)現(xiàn)表格首列相同數(shù)據(jù)合并的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04

