亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

在vue中如何使用Mock.js模擬數(shù)據(jù)

 更新時間:2023年05月18日 09:22:03   作者:lyc3858  
這篇文章主要介紹了在vue中如何使用Mock.js模擬數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

讓前端攻城師獨立于后端進(jìn)行開發(fā)。

1、環(huán)境搭建

安裝        

npm install mockjs

在src目錄下新建mock文件夾并創(chuàng)建index.js來使用mockjs,然后在main.js中引入這個文件。

main.js

import Vue from 'vue'
import App from './App.vue'
//引入模擬的數(shù)據(jù)
import './mock/index.js'
new Vue({
  render: h => h(App),
}).$mount('#app')

@mock/index.js

//引入mockjs
import Mock from 'mockjs';

2、Mock 語法規(guī)范

Mock.js 的語法規(guī)范包括兩部分:

  • 數(shù)據(jù)模板定義規(guī)范(Data Template Definition,DTD)
  • 數(shù)據(jù)占位符定義規(guī)范(Data Placeholder Definition,DPD)

數(shù)據(jù)模板定義規(guī)范 DTD

數(shù)據(jù)模板中的每個屬性由 3 部分構(gòu)成:屬性名、生成規(guī)則、屬性值。

// 屬性名   name
// 生成規(guī)則 rule
// 屬性值   value
'name|rule': value

注意:

屬性名和生成規(guī)則之間用豎線  |  分隔。

生成規(guī)則是可選的。

生成規(guī)則有7種格式:

  • "name|min-max":value
  • "name|count":value
  • "name|min-max.dmin-dmax":value
  • "name|min-max.dcount": value
  • "name|count.dmin-dmax": value
  • "name|count.dcount": value
  • "name|+step": value

生成規(guī)則 的 含義 需要依賴 屬性值的類型 才能確定。

  • 屬性值中可以含有 `@占位符`。
  • 屬性值還指定了最終值的初始值和類型。

2.1、生成規(guī)則和示例:根據(jù)屬性值的不同

屬性值是字符串 String

"name|min-max": string

通過重復(fù) string 生成一個字符串,重復(fù)次數(shù)大于等于 min,小于等于 max。

"name|count": string

通過重復(fù) string 生成一個字符串,重復(fù)次數(shù)等于 count。

屬性值是數(shù)字 Number

"name|+1": number

屬性值自動加 1,初始值為 number。

"name|min-max": number

生成一個大于等于 min、小于等于 max 的整數(shù),屬性值 number 只是用來確定類型。

"name|min-max.dmin-dmax": number

生成一個浮點數(shù),整數(shù)部分大于等于 min、小于等于 max,小數(shù)部分保留 dmin 到 dmax 位

屬性值是布爾型 Boolean

"name|1": boolean

隨機(jī)生成一個布爾值,值為 true 的概率是 1/2,值為 false 的概率同樣是 1/2。

"name|min-max": value

隨機(jī)生成一個布爾值,值為 value 的概率是 min / (min + max),值為 !value 的概率是 max / (min + max)。

屬性值是對象 Object

"name|count": object

從屬性值 object 中隨機(jī)選取 count 個屬性。

"name|min-max": object

從屬性值 object 中隨機(jī)選取 min 到 max 個屬性。

屬性值是數(shù)組 Array

"name|1": array

從屬性值 array 中隨機(jī)選取 1 個元素,作為最終值。

"name|+1": array

從屬性值 array 中順序選取 1 個元素,作為最終值。

"name|min-max": array

通過重復(fù)屬性值 array 生成一個新數(shù)組,重復(fù)次數(shù)大于等于 min,小于等于 max。

"name|count": array

???????通過重復(fù)屬性值 array 生成一個新數(shù)組,重復(fù)次數(shù)為 count。

屬性值是函數(shù) Function

"name": function

???????執(zhí)行函數(shù) function,取其返回值作為最終的屬性值,函數(shù)的上下文為屬性 'name' 所在的對象。

屬性值是正則表達(dá)式 RegExp

'name': regexp

根據(jù)正則表達(dá)式 regexp 反向生成可以匹配它的字符串。用于生成自定義格式的字符串

數(shù)據(jù)占位符定義規(guī)范 DPD

  • 占位符只是在屬性值字符串中占個位置,并不出現(xiàn)在最終的屬性值中。

占位符的格式為:

  • @占位符
  • @占位符(參數(shù) [, 參數(shù)])

注意:

  • 用 @ 來標(biāo)識其后的字符串是占位符占位符引用的是 Mock.Random 中的方法
  • 通過 Mock.Random.extend() 來擴(kuò)展自定義占位符
  • 占位符也可以引用數(shù)據(jù)模板中的屬性
  • 占位符會優(yōu)先引用數(shù)據(jù)模板中的屬性
  • 占位符支持相對路徑和絕對路徑
Mock.mock({
    //這里的email、phone、last等都是在Mock.Rndom里的方法
    name: {
        //@是語法糖,不使用@ 就需要 Mock.Rndom.email()
        first: '@email',            
        middle: '@phone',
        last: '@LAST',
        full: '@first @middle @last'
    }
})

2.2、發(fā)送get請求

@mock/index.js

//引入mockjs
import Mock from 'mockjs';
//get請求
//書寫模擬數(shù)據(jù)
let userInfo = Mock.mock({
    //屬性名 | 生成規(guī)則 : 屬性值
    "userInfo|5-10": [
        {
            "id|+1": 1,
            //關(guān)于屬性值@指向的 Mock.Random 中的方法,詳情可以去官方文檔
            //這里屬性名沒有特殊符號啥的,所以 "name" 可簡寫為 name
            name: "@cname()",
            address: "@city(true)",
            email: "@email(163.com)",
            userImg: "@image('200x100')",
            date: "@date(yyyy-MM-dd hh:mm:ss)",
            title: "@ctitle(3,5)",
        },
    ],
});
//json-server會提供給我們接口地址,mockjs需要我們自己寫
//寫接口,并提供返回值
Mock.mock("/user/list", "get", () => {
    return {
        code: 200,
        message: "get請求成功",
        data: userInfo,
        total: userInfo.length,
    };
});
//如果自己生成數(shù)據(jù),可以直接寫,提供一個請求接口就行
let add = [
    {
        "id": "1",
        "imgUrl": "/images/banner1.jpg"
    },
    {
        "id": "2",
        "imgUrl": "/images/banner2.jpg"
    },
    {
        "id": "3",
        "imgUrl": "/images/banner3.jpg"
    },
]
Mock.mock('/lyc', 'get', () => add)

使用模擬數(shù)據(jù)

<script>
import axios from "axios";
export default {
  async created() {
    let res = await axios.get("/user/list");
    console.log("get請求", res.data);
    let res1 = await axios.get("/lyc");
    console.log(res1.data);
  },
};
</script>

2.3、發(fā)送post請求

//引入mockjs
import Mock from 'mockjs';
let { newData } = Mock.mock({
    "newData|1-3": [
        {
            //隨機(jī)生成 2 句話
            companyDescription: "@cparagraph(2)",
            //從屬性值 `array` 中按順序選取 1 個元素,作為最終值。
            "positionTitle|+1": [
                "Java開發(fā)工程師",
                "Python開發(fā)工程師",
                "前端開發(fā)工程師",
                "產(chǎn)品經(jīng)理",
            ],
            //從屬性值 `array` 中隨機(jī)選取 1 個元素,作為最終值。
            "degree|1": ["本科", "碩士", "博士", "???],
            //隨機(jī)生成5個單詞
            jobDescription: "@word(5)",
        },
    ],
});
Mock.mock("/api/user", "post", (data) => {
    console.log(data);
    return {
        status: 200,
        message: "post請求成功",
        data: newData,
    };
});

使用模擬數(shù)據(jù)

<script>
import axios from "axios";
export default {
  async created() {
    let res2 = await axios.post("/api/user", { name: "帥比" });
    console.log(res2);
  },
};
</script>

3、Mockjs配合fastmock使用

使用fastmock配合mock生成模擬數(shù)據(jù),不用做以上步驟,只需要把mock生成數(shù)據(jù)的代碼寫在接口里就行。也就是前面的都不用看,找上面的 2.1、生成規(guī)則和示例:根據(jù)屬性值的不同就行。

一些例子

  • 生成隨機(jī)11位數(shù)字---手機(jī)號
phone:”@string(‘number',11)”?
  • 隨機(jī)生成中文姓名
name:”@cname()”?
  • 生成隨機(jī)圖片
imgUrl:”@image(‘200x200',#eee)”?
  • 生成隨機(jī)句子
juzi:”@csentence()”?
  • 生成隨機(jī)id
"categoryId":"@string(number,1,2)",

使用fastmock

登錄注冊后,新建項目后到這個頁面,點紅色框

把我們之前的mockjs代碼寫這,保存就行

使用模擬數(shù)據(jù)接口

 

//直接書寫mockjs代碼生成路徑,直接使用就行,mockjs都不用安裝
<script>
import axios from "axios";
export default {
  async created() {
    let res3 = await axios.get(
      "https://www.fastmock.site/mock/371c1959a072aa34e8a7485e44262576/api/user"
    );
    console.log("res3", res3.data);
  },
};
</script>

普通html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
</head>
<body>
    <script>
        function lyc() {
            axios.get(
                "https://www.fastmock.site/mock/371c1959a072aa34e8a7485e44262576/api/user"
            ).then(
                res => { console.log(res.data); }
            );
        }
        lyc()
    </script>
</body>
</html>

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • uniapp模仿微信實現(xiàn)聊天界面的示例代碼

    uniapp模仿微信實現(xiàn)聊天界面的示例代碼

    這篇文章主要介紹了如何利用uniapp模仿微信,實現(xiàn)一個聊天界面。文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Vue有一定的幫助,感興趣的可以了解一下
    2022-01-01
  • vue自定義loader將行內(nèi)樣式px轉(zhuǎn)rem適配

    vue自定義loader將行內(nèi)樣式px轉(zhuǎn)rem適配

    這篇文章主要為大家介紹了vue自定義loader將行內(nèi)樣式px轉(zhuǎn)rem適配示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • 詳解Vue的異步更新實現(xiàn)原理

    詳解Vue的異步更新實現(xiàn)原理

    這篇文章主要介紹了Vue的異步更新實現(xiàn)原理,幫助大家更好的理解和使用vue,感興趣的朋友可以了解下
    2020-12-12
  • Vue.extend 登錄注冊模態(tài)框的實現(xiàn)

    Vue.extend 登錄注冊模態(tài)框的實現(xiàn)

    這篇文章主要介紹了Vue.extend 登錄注冊模態(tài)框的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Vue中this.$refs獲取為undefined的原因和解決辦法(this.$refs.屬性為undefined原因)

    Vue中this.$refs獲取為undefined的原因和解決辦法(this.$refs.屬性為undefined原因

    在Vue項目開發(fā)中,使用this.$refs訪問組件或DOM元素的引用時,可能會遇到獲取為undefined的情況,這篇文章主要介紹了Vue中this.$refs獲取為undefined的原因和解決辦法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-11-11
  • Vue前端項目部署IIS的實現(xiàn)

    Vue前端項目部署IIS的實現(xiàn)

    這篇文章主要介紹了Vue前端項目部署IIS的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 詳解Vue.js 2.0 如何使用axios

    詳解Vue.js 2.0 如何使用axios

    本篇文章主要介紹了Vue.js 2.0 如何使用axios,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • Vant picker選擇器設(shè)置默認(rèn)值導(dǎo)致選擇器失效的解決

    Vant picker選擇器設(shè)置默認(rèn)值導(dǎo)致選擇器失效的解決

    這篇文章主要介紹了Vant picker選擇器設(shè)置默認(rèn)值導(dǎo)致選擇器失效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • axios對請求各種異常情況處理的封裝方法

    axios對請求各種異常情況處理的封裝方法

    今天小編就為大家分享一篇axios對請求各種異常情況處理的封裝方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • vue $attrs和$listeners的使用與區(qū)別

    vue $attrs和$listeners的使用與區(qū)別

    本文主要介紹了vue $attrs和$listeners的使用與區(qū)別,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02

最新評論