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

資訊專欄INFORMATION COLUMN

用JSON-server模擬REST API(二) 動(dòng)態(tài)數(shù)據(jù)

weakish / 1755人閱讀

摘要:上一篇演示了如何安裝并運(yùn)行在這里將使用第三方庫讓模擬的數(shù)據(jù)更加豐滿和實(shí)用。使用動(dòng)態(tài)數(shù)據(jù)上一篇演示時(shí),使用了作為數(shù)據(jù)載體,雖然方便,但是如果需要大量的數(shù)據(jù),則顯得力不從心。

上一篇演示了如何安裝并運(yùn)行 json server , 在這里將使用第三方庫讓模擬的數(shù)據(jù)更加豐滿和實(shí)用。

使用動(dòng)態(tài)數(shù)據(jù)

上一篇演示時(shí),使用了 db.json 作為數(shù)據(jù)載體,雖然方便,但是如果需要大量的數(shù)據(jù),則顯得力不從心。
幸好 json server 可以通過js動(dòng)態(tài)生成json格式數(shù)據(jù),官方例子為生成1000組user數(shù)據(jù):

# /mock/db.js

module.exports = function() {
  var data = { users: [] }
  // Create 1000 users
  for (var i = 0; i < 1000; i++) {
    data.users.push({ id: i, name: "user" + i })
  }
  return data
}

/mock 下運(yùn)行

json-server db.js -p 3003

我們?cè)L問 http://localhost:3003/news/ 看到的數(shù)據(jù)是

[
  {"id": 0,"name": "user0"},
  {"id": 1,"name": "user1"},
  {"id": 2,"name": "user2"},
  {"id": 3,"name": "user3"},
  ...
  {"id": 999,"name": "user999"}
]

但是在開發(fā)環(huán)境中,name 這個(gè)屬性應(yīng)該是諸如 “李鐵蛋”, “張艷華” 或者是 “Brenda Thomas”,
“Daniel Wilson” 這樣接地氣的名字,而不是 “user0”, “user1” 這樣讓人望而生畏的名字,對(duì)于用戶的
年齡,性別,籍貫,也應(yīng)該有比較合理的數(shù)據(jù)展示。

為什么選擇mockjs

數(shù)據(jù)生成器有很多,比較出名的有 faker ,chance ,mockjs 等,其中最為強(qiáng)大的非 faker 莫屬,不但擁有幾乎全部常用的數(shù)據(jù)格式,而且還有中英德法等多種語言的數(shù)據(jù)。但是在實(shí)際測試中發(fā)現(xiàn),faker 對(duì)中文數(shù)據(jù)的支持還是以西方文字為基礎(chǔ),并不能很好的模擬中文,例如:

let faker = require("faker");

faker.locale = "zh_CN";

console.log(faker.address.city());          => 南 羅
console.log(faker.address.streetName());    => 陳 橋
console.log(faker.company.companyName());   => 靜琪 - 越澤
console.log(faker.date.month());            => May
console.log(faker.internet.email());        => [email protected]
console.log(faker.phone.phoneNumber());     => 922-61957652

這些看起來有些怪異的中文格式,多半是不能用于國內(nèi)的數(shù)據(jù)模擬的,我們?cè)倏纯?mockjs 的表現(xiàn):

let Mock  = require("mockjs");
let Random = Mock.Random;

console.log(Random.city());          => 珠海市
console.log(Random.cname());         => 韓桂英
console.log(Random.date());          => 2007-08-05
console.log(Mock.mock({              => {stars: "★★★★★"}
  "stars|1-10": "★"
}));
Random.image("200x100", "#4A7BF7", "hello")
  =>  見下圖

雖然 mockj s可以模擬的數(shù)據(jù)不如 faker 那么多,但是由于其對(duì)中文的良好支持,并且使用了位于國內(nèi)的
隨機(jī)圖片提供商,顯然是更適合國情的選擇。

mockjs用法示例

請(qǐng)先用15分鐘閱讀 mockjs官方文檔

安裝mockjs

/mock 目錄下安裝

npm install mockjs --save
Mock.mock

我知道有些人不會(huì)去認(rèn)真的閱讀官方文檔,所以在此摘抄一些官方文檔中的例子作為示范:

// repeat 方法(部分)

Mock.mock({
  "string|5": "★"       =>   "string": "★★★★★"
  "string|1-10": "★"    =>   "string": "★★"
  "number|1-100": 100    =>   "number": 85
  "number|1-100.2": 100  =>   "number": 25.69
})

Mock.Random

我知道有些人不會(huì)去認(rèn)真的閱讀官方文檔,所以在此摘抄一些官方文檔中的例子作為示范:

// random 方法(部分)

Random.integer(60, 100)    => 78
Random.float(60, 100)      => 89.565475
Random.range(60, 100)      => [60,61,62,...,99]
Random.date()              => "2018-12-28"
Random.image("200x100","#396") => "http://dummyimage.com/200x100/396"
Random.color()             => "#79d8f2"  (默認(rèn)使用hex顏色)
Random.county(true)        => "浙江省 舟山市 岱山縣"
為什么不在瀏覽器中使用mockjs

通過閱讀 mockjs 的官方文檔可以發(fā)現(xiàn),它其實(shí)是作為一個(gè)獨(dú)立的 mock server 存在的,就算沒有json server,一樣可以反饋數(shù)據(jù),但是由于以下一些缺點(diǎn),讓我只能把它作為一個(gè)數(shù)據(jù)構(gòu)造器來使用:

不能跨域使用

與某些框架中的路由處理邏輯沖突

無法定義復(fù)雜的數(shù)據(jù)結(jié)構(gòu),比如下面的數(shù)據(jù)結(jié)構(gòu),images 將會(huì)是字符串 [object object], 而非預(yù)想中的數(shù)組:

Mock.mock({
    "list|1-10": [
      "id|+1": 1,
      "images": [1,2,3]
    ] 
  })

無法自定義較為復(fù)雜的路由

示例

下面是一個(gè)使用 mockjs 構(gòu)造的比較復(fù)雜的數(shù)據(jù)格式,對(duì)象是一個(gè)新聞列表,其中有100條新聞,每條新聞?dòng)袑?duì)應(yīng)的id,標(biāo)題,內(nèi)容,簡介,標(biāo)簽,瀏覽量,和一個(gè)圖片數(shù)組:

# /mock/db.js

let Mock  = require("mockjs");
let Random = Mock.Random;

module.exports = function() {
  var data = { 
      news: []
  };
  
  var images = [1,2,3].map(x=>Random.image("200x100", Random.color(), Random.word(2,6)));

  for (var i = 0; i < 100; i++) {
      
    var content = Random.cparagraph(0,10);

    data.news.push({
         id: i, 
         title: Random.cword(8,20),
         desc: content.substr(0,40),
         tag: Random.cword(2,6),
         views: Random.integer(100,5000),
         images: images.slice(0,Random.integer(1,3))
    })
  }

  return data
}

/mock 下運(yùn)行

json-server db.js -p 3003

訪問 http://localhost:3003/news 看到的數(shù)據(jù)是:

[
    {
        "id": 0,
        "title": "元小總小把清保住影辦歷戰(zhàn)資和總由",
        "desc": "共先定制向向圓適者定書她規(guī)置斗平相。要廣確但教金更前三響角面等以白。眼查何參提適",
        "tag": "值集空",
        "views": 3810,
        "images": [
            "http://dummyimage.com/200x100/79f2a5&text=別角置",
            "http://dummyimage.com/200x100/f28279&text=收面幾容受取",
            "http://dummyimage.com/200x100/7993f2&text=做件"
        ]
    },
    {
        "id": 1,
        "title": "物器許條對(duì)越復(fù)術(shù)",
        "desc": "方江周是府整頭書生權(quán)部部條。始克識(shí)史但給又約同段十子按者感律備。關(guān)長廠平難山從合",
        "tag": "分七眼術(shù)保",
        "views": 4673,
        "images": [
        "http://dummyimage.com/200x100/79f2a5&text=別角置"
        ]
    },
    {
        "id": 2,
        "title": "但學(xué)卻連質(zhì)法計(jì)性想般最",
        "desc": "以群親它天即資幾行位具回同務(wù)度。場養(yǎng)驗(yàn)快但部光天火金時(shí)內(nèi)我。任提教毛辦結(jié)論感看還",
        "tag": "響六",
        "views": 4131,
        "images": [
            "http://dummyimage.com/200x100/79f2a5&text=別角置",
            "http://dummyimage.com/200x100/f28279&text=收面幾容受取",
            "http://dummyimage.com/200x100/7993f2&text=做件"
        ]
    },
    ...
    {
        "id": 99,
        "title": "則群起然線部其深我位價(jià)業(yè)紅候院",
        "desc": "為高值務(wù)須西生型住斷況里聽。志置開用她你然始查她響元還。照員給門次府此據(jù)它后支越",
        "tag": "何你",
        "views": 2952,
        "images": [
            "http://dummyimage.com/200x100/79f2a5&text=別角置"
        ]
    }
]
參考資料

json-server源碼 : json-server
mockjs源碼 : mockjs
demo : 示例代碼

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

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

相關(guān)文章

  • 理解RESTful架構(gòu)與json-server模擬REST api的使

    摘要:一什么是架構(gòu)即的縮寫,我們把他翻譯為表述性狀態(tài)傳遞,是博士在年他的博士論文中提出來的一種軟件架構(gòu)風(fēng)格。是個(gè)無狀態(tài)的協(xié)議,所以狀態(tài)就保存在服務(wù)器端。只要少量的數(shù)據(jù)就可使用,支持和。同時(shí)支持,同時(shí)提供一系列的查詢方法如。 一、什么是RESTful架構(gòu)? REST即Representational State Transfer的縮寫,我們把他翻譯為表述性狀態(tài)傳遞,是Roy Fielding博...

    Atom 評(píng)論0 收藏0
  • 介紹兩大神器!——使json-server和faker.js模擬REST API

    摘要:今天發(fā)現(xiàn)了一個(gè)神器在他的幫助下可以在很短的時(shí)間內(nèi)搭建一個(gè)然后就可以讓前端在不依賴后端的情況下進(jìn)行開發(fā)啦關(guān)于什么是設(shè)計(jì)指南阮一峰簡單來說,是一個(gè)模塊,運(yùn)行服務(wù)器,你可以指定一個(gè)文件作為的數(shù)據(jù)源。更多屬性可以查看這里好啦,基本就是這樣啦, 今天發(fā)現(xiàn)了一個(gè)神器——json-server!在他的幫助下可以在很短的時(shí)間內(nèi)搭建一個(gè)Rest API, 然后就可以讓前端在不依賴后端的情況下進(jìn)行開發(fā)啦!...

    sarva 評(píng)論0 收藏0
  • JSON-server模擬REST API(一) 安裝運(yùn)行

    摘要:曹縣宣布昨日晚間登日成功長江流域首次發(fā)現(xiàn)海豚支持黨中央決定抄寫黨章勢在必行為了方便,再創(chuàng)建一個(gè)文件,寫入然后使用到目錄下執(zhí)行命令,如果成功會(huì)出現(xiàn)你的電腦中文件夾所在目錄的路徑如果不成功請(qǐng)檢查文件的格式是否正確。 在開發(fā)過程中,前后端不論是否分離,接口多半是滯后于頁面開發(fā)的。所以建立一個(gè)REST風(fēng)格的API接口,給前端頁面提供虛擬的數(shù)據(jù),是非常有必要的。 對(duì)比過多種mock工具后,我最終...

    Sleepy 評(píng)論0 收藏0
  • JSON-server模擬REST API(三) 進(jìn)階使

    摘要:前面演示了如何安裝并運(yùn)行和使用第三方庫真實(shí)化模擬數(shù)據(jù)下面將展開更多的配置項(xiàng)和數(shù)據(jù)操作。示例數(shù)據(jù)源元小總小把清保住影辦歷戰(zhàn)資和總由共先定制向向圓適者定書她規(guī)置斗平相。 前面演示了如何安裝并運(yùn)行 json server , 和使用第三方庫真實(shí)化模擬數(shù)據(jù) , 下面將展開更多的配置項(xiàng)和數(shù)據(jù)操作。 配置項(xiàng) 在安裝好json server之后,通過 json-server -h 可以看到如下配置項(xiàng)...

    xavier 評(píng)論0 收藏0
  • 使json-server模擬REST API

    摘要:官方地址使用可全局安裝,也可針對(duì)項(xiàng)目安裝??捎瞄_啟服務(wù)。數(shù)據(jù)文件格式如下讓讀書點(diǎn)燃?jí)粝氲攸c(diǎn)濱江星耀城讓讀書點(diǎn)燃?jí)粝氲攸c(diǎn)濱江星耀城仿京東購物車仿京東購物車修改里面的命令。 在前端開發(fā)中,如果后端接口還沒有提供,前端拿不到數(shù)據(jù),可能就沒法繼續(xù)寫一些交互行為的代碼。這一問題可通過json-server來很好地解決。本文主要講如何將json-server和webpack進(jìn)行整合,基于vue-w...

    smartlion 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<