成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

vue+vuecli+webpack中使用mockjs模擬后端數(shù)據(jù)

since1986 / 3389人閱讀

摘要:前言使用可以事先模擬數(shù)據(jù),前提是和后端約定好了數(shù)據(jù)接口,怎樣的數(shù)據(jù)。其主要功能是基于數(shù)據(jù)模板生成模擬數(shù)據(jù)。攔截并模擬請求。生成規(guī)則是可選的。占位符會優(yōu)先引用數(shù)據(jù)模板中的屬性。

前言

使用mockjs可以事先模擬數(shù)據(jù),前提是和后端約定好了數(shù)據(jù)接口,怎樣的數(shù)據(jù)。使用mock就可以生成你要的數(shù)據(jù)了,從而實(shí)現(xiàn)開發(fā)時(shí)前后端分離。

其主要功能是:

基于數(shù)據(jù)模板生成模擬數(shù)據(jù)。

基于HTML模板生成模擬數(shù)據(jù)。

攔截并模擬 ajax 請求。

語法規(guī)范

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

1.數(shù)據(jù)模板定義規(guī)范(Data Template Definition,DTD)

2.數(shù)據(jù)占位符定義規(guī)范(Data Placeholder Definition,DPD)

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

數(shù)據(jù)模板中的每個(gè)屬性由 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ī)則 的 含義 需要依賴 屬性值的類型 才能確定。

屬性值 中可以含有 @占位符。

屬性值 還指定了最終值的初始值和類型。

例1:

Mock.mock({
    "number1|1-100.1-10": 1,
    "number2|123.1-10": 1,
    "number3|123.3": 1,
    "number4|123.10": 1.123
})
// =>
{
    "number1": 12.92,
    "number2": 123.51,
    "number3": 123.777,
    "number4": 123.1231091814
}

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

Mock.mock({
    "regexp1": /[a-z][A-Z][0-9]/,
    "regexp2": /wWsSdD/,
    "regexp3": /d{5,10}/
})
// =>
{
    "regexp1": "pJ7",
    "regexp2": "F)fp1G",
    "regexp3": "561659409"
}

例3:

//string表示屬性名
//3表示后面屬性值重復(fù)次數(shù)
 Mock.mock({
  "string|3": "★"
})

結(jié)果:

//星星數(shù)量為3
{
  "string": "★★★"
}

例4:

// num為屬性名
// 生成一個(gè)大于等于1,小于等于100 的整數(shù),屬性值100只是用來確定類型
Mock.mock({
  "num|1-100": 100
})

結(jié)果:

{
  "number": 8
}
數(shù)據(jù)占位符定義規(guī)范 DPD

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

占位符 的格式為:

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

注意:

用 @ 來標(biāo)識其后的字符串是 占位符。

占位符 引用的是 Mock.Random 中的方法。

通過 Mock.Random.extend() 來擴(kuò)展自定義占位符。

占位符 也可以引用 數(shù)據(jù)模板 中的屬性。

占位符 會優(yōu)先引用 數(shù)據(jù)模板 中的屬性。

占位符 支持 相對路徑 和 絕對路徑。

Mock.mock({
    name: {
        first: "@FIRST",
        middle: "@FIRST",
        last: "@LAST",
        full: "@first @middle @last"
    }
})
// =>
{
    "name": {
        "first": "Charles",
        "middle": "Brenda",
        "last": "Lopez",
        "full": "Charles Brenda Lopez"
    }
}
通過jQuery ajax請求假數(shù)據(jù)例子

1.首先,引入mockjs,引入jquery(此處用jq封裝好的ajax發(fā)送請求)


2.使用mock生成數(shù)據(jù)模板

//這里的第一個(gè)參數(shù)http://api.cn 就是下面ajax請求的url,mock對該url進(jìn)行攔截"
//這里的第二個(gè)參數(shù)就是template數(shù)據(jù)模板,mock會返回模板生成的數(shù)據(jù)
     Mock.mock("http://api.cn", {
        "name": "@name",
        "age|1-100": 100,
        "city": "@city"
    });

3.ajax發(fā)送請求與結(jié)果

$.ajax({
    url: "http://api.cn",
    dataType: "json"
}).done(function(data, status, xhr) {
    console.log( JSON.stringify(data)); //{"name":"Mark Lee","age":4,"city":"遼陽市"}
});
vuecli中使用mockjs

首先安裝

npm install mockjs

我的項(xiàng)目src下的結(jié)構(gòu)如下:

我在scripts中新建了一個(gè)mockdata.js
里面的內(nèi)容如下:

import Mock from "mockjs";
const data = Mock.mock({
  // 屬性 list 的值是一個(gè)數(shù)組,其中含有 1 到 10 個(gè)元素
  "foods|10-50": [{
    "name": "@ctitle(2,10)",
    "img": "@image("600x600",#b7ef7c)",
    "brief": "@csentence(1,50)",
    "price|0-20.0-2": 1,
    "num": 0,
    "minusFlag": true,
    "time": "@time",
    "peisongfei|0-100.0-2": 1,
    "limit|0-50": 1
  }],
  "sales|10-50": [{
    // 屬性 id 是一個(gè)自增數(shù),起始值為 1,每次增 1
    "name": "@ctitle(2,10)",
    "img": "@image("600x600",#b7ef7c)",
    "brief": "@csentence(1,50)",
    "price|0-100.0-2": 1,
    "num": 0,
    "minusFlag": true,
    "time": "@time",
    "peisongfei|0-100.0-2": 1,
    "limit|0-100": 1
  }]
});

export default {
  data
}

接下來,在需要用到的mock數(shù)據(jù)的vue組件頁面中,這樣寫

import mockdata from "@/scripts/mockdata.js";

引用數(shù)據(jù),在你methods里面 直接引用剛剛的mockdata即可。例如:

new Promise((resolve, reject) => {
    that.foods =mockdata.data.foods;  //直接點(diǎn)出你生成的假數(shù)據(jù)對象即可
    that.foodsListLen = that.foods.length;
 }).catch(err=>{
      console.log(err)
 })
參考

官網(wǎng)地址:https://github.com/nuysoft/Mock/wiki

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/89268.html

相關(guān)文章

  • VueCli3.0集成MockApi

    摘要:缺點(diǎn)需要增加本地的代碼量,以及需要配置實(shí)現(xiàn)攔截優(yōu)點(diǎn)數(shù)據(jù)通過會更豐富。缺點(diǎn)修改內(nèi)容溝通成本高,跟后端扯皮利用去模擬優(yōu)點(diǎn)可控內(nèi)容以及實(shí)現(xiàn)動態(tài)。三本地周邊知識本地的思想就是利用完成。注意接口的和自己的接口不要沖突。 VueCli3.0中集成MockApi 一:使用場景 哎喲,好煩啊,這個(gè)需求還么結(jié)束就來下一個(gè)需求,程序員不要排期的嗎? 沒辦法啊,資本主義的XX嘴臉啊 來吧,技術(shù)評審我倆把接口...

    劉玉平 評論0 收藏0
  • 淺談前端mock

    摘要:引言前端開發(fā)經(jīng)常需要等待后端的接口,嚴(yán)重影響了開發(fā)效率,我們一般采用方式來避免這個(gè)問題??赡軙婕暗介T技術(shù),分別是服務(wù)端技術(shù)隨機(jī)生成特定格式數(shù)據(jù)的技術(shù)請求轉(zhuǎn)發(fā)請求攔截。 引言 前端開發(fā)經(jīng)常需要等待后端的接口,嚴(yán)重影響了開發(fā)效率,我們一般采用mock方式來避免這個(gè)問題。本人參考了大量文章,結(jié)合自己的經(jīng)驗(yàn),給出自己在mock上的一些理解。 1. 原理 何為mock,我認(rèn)為mock主要就是通...

    elina 評論0 收藏0
  • vue-cli 使用 Mockjs 詳解

    摘要:想到函數(shù)有延遲網(wǎng)絡(luò)請求稀釋事件延遲執(zhí)行的效果,于是將模板函數(shù)用包裹起來,如下結(jié)果出現(xiàn)有意思的事情當(dāng)請求比較頻繁,在延遲時(shí)間內(nèi),本次請求得到的響應(yīng)數(shù)據(jù)是上次請求的結(jié)果。 vue-cli 中使用 Mockjs 詳解 背景 前端在早期jQuery時(shí)代時(shí),前端功能和后端工程基本上都是合在一起,典型的就是常見的maven工程下面的webapp目錄包含前端各類靜態(tài)資源文件。這個(gè)時(shí)候,我們總是會遇...

    developerworks 評論0 收藏0
  • 手摸手,帶你用vue擼后臺 系列五(v4.0新版本)

    摘要:同時(shí)增加了單元測試,使用了,增加了可視化配置權(quán)限,增加了自定義布局等等,優(yōu)化了原先的權(quán)限方案,支持不刷新頁面更新路由等等功能。雖然它的初衷是為了單元測試的,但正好滿足了我們的需求。它會重寫瀏覽器的對象,從而才能攔截所有請求,代理到本地。 前言 vue-element-admin 從 2017.04.17提交第一個(gè) commit 以來,維護(hù)至今已經(jīng)有兩年多的時(shí)間了了,發(fā)布了四十多個(gè)版本,...

    MonoLog 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<