国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

實戰Vue簡易項目(5)模擬數據

Magicer / 3346人閱讀

摘要:若需要傳參,傳第二個參數不接受多個參數的傳入,最多只接收兩個參數請求數據目前,通過以上步驟,我們獨立的構建了模擬數據和狀態管理,但還沒有將它們結合起來。驗證如果你想驗證寫出來的模擬數據是否正確,可以在示例頁打開控制臺,直接運行。

關于模擬數據,這里使用Mock.js這個庫,關于用法,官網說的也比較詳細,這里我就簡單的帶一下。

列表數據

我們先將項目中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

顯示效果

在手機模式下,顯示效果如下:

模擬數據

在項目根目錄下,使用命令行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()的簡寫形式;

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

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

新建src/mock/index.js

Mock.js攔截請求地址:

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

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

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

rurl:攔截路徑規則,可以是字符串"/",也可以是一個正則表達式///

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

若需要根據請求參數不同,返回對應id的數據,則需要自己截取url字符串作判斷了;

rtype:攔截請求類型,getpost

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

optioins = {url, type, body}

url為請求地址;

type為請求類型;

body為請求時傳入的數據(只在post請求時有用);

狀態管理

這里,我們使用vuex作狀態管理,axios請求數據: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保存整個項目公用的狀態,mutations進行同步數據處理,actions處理異步請求。

mutations是唯一修改state的入口,actions要想修改state,需要內部調用一下mutations

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

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

在項目中,通過this.$store.dispatch("requestApplications")調用一個異步請求。

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

請求數據

目前,通過以上步驟,我們獨立的構建了模擬數據和狀態管理,但還沒有將它們結合起來。

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

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

結束了?

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

觸發請求。

請求結果

Mock.js用法

如果想了解Mock.js的用法,推薦看官網的"文檔"頁,而不是"示例"頁。

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

規則

格式:

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

語法規范:

數據模板中的每個屬性由 3 部分構成:屬性名、生成規則、屬性值:

// 屬性名 name
// 生成規則 rule
// 屬性值 value
"name|rule": value

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

如果你想驗證寫出來的模擬數據是否正確,可以在“示例”頁打開控制臺,直接運行。

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

vue-devtools

安裝地址

使用提醒

$vm0指向某一組件實例,該實例必須打開控制臺的VueTab頁,點擊某一組件時才能獲取到,否則,匯報$vm0未定義

點擊哪個組件,$vm0指向哪個組件,才能獲取到該組件上的屬性。

章節回顧

知道如何模擬數據了吧,接下來我要偷偷的模擬列表的數據了呢,你也不要忘了。

如何使用Mock.js攔截請求呢,如何獲得請求時的數據呢?

如何通過axios請求數據呢,它和mutations有何區別?

思考

懶貨一枚,選擇第三方列表庫,如何在Vue項目中使用呢?

相關的官方文檔

MockJS使用文檔

MockJS示例(可通過控制臺測試)

Vuex官網

番外

Vue-router用法

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/96620.html

相關文章

  • 實戰Vue簡易項目(3)需求分析

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

    CompileYouth 評論0 收藏0
  • 實戰Vue簡易項目(1)初始化環境配置

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

    mindwind 評論0 收藏0
  • 實戰Vue簡易項目(4)定義視圖

    摘要:是中的條件指令,根據返回的布爾值動態添加或移除元素。傳值方式我是標題需要在中定義函數傳的值為字符串,不需要前綴傳的值為非字符串數字布爾值函數數組對象,為前綴,值為表達式計算結果在程序中,如引用的值。為該組件內,元素綁定的事件處理函數。 視圖 包含內容#NavigationBar、#TabBar、#MainContext; 為什么#NavigationBar、#TabBar分在Layou...

    LeoHsiun 評論0 收藏0
  • 關于Vue2一些值得推薦的文章 -- 五、六月份

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

    sutaking 評論0 收藏0

發表評論

0條評論

Magicer

|高級講師

TA的文章

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