亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

實(shí)戰(zhàn)Vue簡(jiǎn)易項(xiàng)目(5)模擬數(shù)據(jù)

Magicer / 3396人閱讀

摘要:若需要傳參,傳第二個(gè)參數(shù)不接受多個(gè)參數(shù)的傳入,最多只接收兩個(gè)參數(shù)請(qǐng)求數(shù)據(jù)目前,通過(guò)以上步驟,我們獨(dú)立的構(gòu)建了模擬數(shù)據(jù)和狀態(tài)管理,但還沒有將它們結(jié)合起來(lái)。驗(yàn)證如果你想驗(yàn)證寫出來(lái)的模擬數(shù)據(jù)是否正確,可以在示例頁(yè)打開控制臺(tái),直接運(yùn)行。

關(guān)于模擬數(shù)據(jù),這里使用Mock.js這個(gè)庫(kù),關(guān)于用法,官網(wǎng)說(shuō)的也比較詳細(xì),這里我就簡(jiǎn)單的帶一下。

列表數(shù)據(jù)

我們先將項(xiàng)目中src/components/HelloWorld.vue刪除,將src/router/index.js作如下修改:

import Vue from "vue"
import Router from "vue-router"
import Index from "@/views/vacation/"

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: "/",
      name: "Index",
      component: Index
    }
  ]
})

然后,在src/views/vacation/建立index.vue

顯示效果

在手機(jī)模式下,顯示效果如下:

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

在項(xiàng)目根目錄下,使用命令行npm i -D mockjs;

新建src/mock/list.js:

import { mock, Random } from "mockjs";

export default mock({
  "list|0-50": [
    {
      "approveId": "@id",
      "applier": {
        "userId": "@guid",
        "userName": "@cname",
        "sectionId": "@id",
        "sectionName": "@ctitle",
      }
      ...
    }
  ]
})

這里的"@id"(稱為“占位符”)是Random.id()的簡(jiǎn)寫形式;

這里的"@id"(稱為“占位符”)必須使用引號(hào)包裹;

這里的"@id" + 111會(huì)是將"@id"當(dāng)作字符串(返回"@id111"),不等于Random.id() + 111;

新建src/mock/index.js

Mock.js攔截請(qǐng)求地址:

import { mock, Random } from "mockjs";
import List from "./list";

mock("/","get",()=> List);

在這里,使用Mock.mock( rurl?, rtype?, function( options ) )攔截路由請(qǐng)求的/路徑,返回模擬的List列表。

rurl:攔截路徑規(guī)則,可以是字符串"/",也可以是一個(gè)正則表達(dá)式///。

若請(qǐng)求/?id="1",mock的攔截路徑可以寫成Mock.mock(//?id="d"/,"get",()=>List);

若需要根據(jù)請(qǐng)求參數(shù)不同,返回對(duì)應(yīng)id的數(shù)據(jù),則需要自己截取url字符串作判斷了;

rtype:攔截請(qǐng)求類型,getpost;

function(options):回調(diào)函數(shù),攔截成功后的處理邏輯;

optioins = {url, type, body};

url為請(qǐng)求地址;

type為請(qǐng)求類型;

body為請(qǐng)求時(shí)傳入的數(shù)據(jù)(只在post請(qǐng)求時(shí)有用);

狀態(tài)管理

這里,我們使用vuex作狀態(tài)管理,axios請(qǐng)求數(shù)據(jù):npm i -S vuex axios;

新建src/store/index.js

import Vue from "vue";
import Vuex from "vuex";
import axios from "axios";

Vue.use(Vuex);

const $setApplications = "SETAPPLICATIONS";

export default new Vuex.Store({
  state: {
    applications: null,
  },
  mutations: {
    [$setApplications]: (state, list) => state.applications = list,
  },
  actions: {
    requestApplications({ commit, state }) {
      axios.get("/")
        .then(({data:{list}}) => {
          commit($setApplications, list);
        })
        .catch(() => {
          console.log(arguments);
        })
    }
  }
})

在這里,state保存整個(gè)項(xiàng)目公用的狀態(tài),mutations進(jìn)行同步數(shù)據(jù)處理,actions處理異步請(qǐng)求。

mutations是唯一修改state的入口,actions要想修改state,需要內(nèi)部調(diào)用一下mutations;

在項(xiàng)目程序中,通過(guò)this.$store.commit("SETAPPLICATIONS",null)修改state的值。

若要傳多個(gè)值,第二個(gè)參數(shù)為一個(gè)對(duì)象(不接受多個(gè)參數(shù)的傳入,最多只接收兩個(gè)參數(shù));

在項(xiàng)目中,通過(guò)this.$store.dispatch("requestApplications")調(diào)用一個(gè)異步請(qǐng)求。

若需要傳參,傳第二個(gè)參數(shù)(不接受多個(gè)參數(shù)的傳入,最多只接收兩個(gè)參數(shù));

請(qǐng)求數(shù)據(jù)

目前,通過(guò)以上步驟,我們獨(dú)立的構(gòu)建了模擬數(shù)據(jù)和狀態(tài)管理,但還沒有將它們結(jié)合起來(lái)。

src/main.js中添加import "./mock"import store from "./store",且修改:

new Vue({
  el: "#app",
  router,
  store,
  components: { App },
  template: ""
})

結(jié)束了?

還沒有,我們還要獲取數(shù)據(jù):
src/views/vacation/index.vue中添加:

觸發(fā)請(qǐng)求。

請(qǐng)求結(jié)果

Mock.js用法

如果想了解Mock.js的用法,推薦看官網(wǎng)的"文檔"頁(yè),而不是"示例"頁(yè)。

Mock.js返回的數(shù)據(jù)格式都是對(duì)象,如果想獲取其它格式(如數(shù)組...)需要自己另辟蹊徑了。

規(guī)則

格式:

Mock.mock({
  // 初始化對(duì)象,也是輸出的對(duì)象;
})

語(yǔ)法規(guī)范:

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

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

屬性名 和 生成規(guī)則 之間用豎線 | 分隔(千萬(wàn)不要帶空格吖,否則,你的屬性名可能會(huì)包含空格)。
生成規(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ī)則 的 含義 需要依賴 屬性值的類型 才能確定。
屬性值 中可以含有 @占位符。
屬性值 還指定了最終值的初始值和類型。
驗(yàn)證

如果你想驗(yàn)證寫出來(lái)的模擬數(shù)據(jù)是否正確,可以在“示例”頁(yè)打開控制臺(tái),直接運(yùn)行。

Mock.mock({
  "list|1-10":[
    Random.id(),
  ]
})
測(cè)試結(jié)果

vue-devtools

安裝地址

使用提醒

$vm0指向某一組件實(shí)例,該實(shí)例必須打開控制臺(tái)的VueTab頁(yè),點(diǎn)擊某一組件時(shí)才能獲取到,否則,匯報(bào)$vm0未定義

點(diǎn)擊哪個(gè)組件,$vm0指向哪個(gè)組件,才能獲取到該組件上的屬性。

章節(jié)回顧

知道如何模擬數(shù)據(jù)了吧,接下來(lái)我要偷偷的模擬列表的數(shù)據(jù)了呢,你也不要忘了。

如何使用Mock.js攔截請(qǐng)求呢,如何獲得請(qǐng)求時(shí)的數(shù)據(jù)呢?

如何通過(guò)axios請(qǐng)求數(shù)據(jù)呢,它和mutations有何區(qū)別?

思考

懶貨一枚,選擇第三方列表庫(kù),如何在Vue項(xiàng)目中使用呢?

相關(guān)的官方文檔

MockJS使用文檔

MockJS示例(可通過(guò)控制臺(tái)測(cè)試)

Vuex官網(wǎng)

番外

Vue-router用法

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

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

相關(guān)文章

  • 實(shí)戰(zhàn)Vue簡(jiǎn)易項(xiàng)目(3)需求分析

    摘要:頁(yè)面布局頁(yè)面整體布局分上中下上下部門導(dǎo)航欄,每個(gè)頁(yè)面所共有頁(yè)面的主體,隨內(nèi)容可滾動(dòng)欄,頁(yè)面可選,有的有,有的無(wú)可分離組件日期組件審批流組件列表組件可分離的工具庫(kù)申請(qǐng)單類型事假病假年假對(duì)應(yīng)數(shù)據(jù)類型應(yīng)該為,需要一個(gè)轉(zhuǎn)換為對(duì)應(yīng)的方法申請(qǐng)單狀 頁(yè)面布局 showImg(https://segmentfault.com/img/bVbeCjT?w=663&h=451); App頁(yè)面整體布局分...

    CompileYouth 評(píng)論0 收藏0
  • 實(shí)戰(zhàn)Vue簡(jiǎn)易項(xiàng)目(1)初始化環(huán)境配置

    摘要:目前,我們還沒有創(chuàng)建項(xiàng)目,進(jìn)入預(yù)期項(xiàng)目目錄的上一級(jí)文件目錄下即可。使用腳手架初始化項(xiàng)目最后一個(gè)為項(xiàng)目名稱,可以自定義其它名稱。 本章以下命令都是在cmd命令行中進(jìn)行的。 安裝命令行 npm i -g vue-cli 安裝完成后,輸入vue -V返回版本號(hào),即安裝成功; 初始化項(xiàng)目 切換到項(xiàng)目目錄下 項(xiàng)目目錄,即項(xiàng)目所在目錄。 目前,我們還沒有創(chuàng)建項(xiàng)目,進(jìn)入 預(yù)期項(xiàng)目目錄 的上一級(jí)文件目...

    mindwind 評(píng)論0 收藏0
  • 實(shí)戰(zhàn)Vue簡(jiǎn)易項(xiàng)目(4)定義視圖

    摘要:是中的條件指令,根據(jù)返回的布爾值動(dòng)態(tài)添加或移除元素。傳值方式我是標(biāo)題需要在中定義函數(shù)傳的值為字符串,不需要前綴傳的值為非字符串?dāng)?shù)字布爾值函數(shù)數(shù)組對(duì)象,為前綴,值為表達(dá)式計(jì)算結(jié)果在程序中,如引用的值。為該組件內(nèi),元素綁定的事件處理函數(shù)。 視圖 包含內(nèi)容#NavigationBar、#TabBar、#MainContext; 為什么#NavigationBar、#TabBar分在Layou...

    LeoHsiun 評(píng)論0 收藏0
  • 關(guān)于Vue2一些值得推薦的文章 -- 五、六月份

    摘要:五六月份推薦集合查看最新的請(qǐng)點(diǎn)擊集前端最近很火的框架資源定時(shí)更新,歡迎一下。蘇幕遮燎沈香宋周邦彥燎沈香,消溽暑。鳥雀呼晴,侵曉窺檐語(yǔ)。葉上初陽(yáng)乾宿雨,水面清圓,一一風(fēng)荷舉。家住吳門,久作長(zhǎng)安旅。五月漁郎相憶否。小楫輕舟,夢(mèng)入芙蓉浦。 五、六月份推薦集合 查看github最新的Vue weekly;請(qǐng)::點(diǎn)擊::集web前端最近很火的vue2框架資源;定時(shí)更新,歡迎 Star 一下。 蘇...

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

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

0條評(píng)論

Magicer

|高級(jí)講師

TA的文章

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