最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue Element前端應(yīng)用開發(fā)之獲取后端數(shù)據(jù)

 更新時(shí)間:2021年05月12日 10:47:07   作者:伍華聰  
這篇文章主要介紹了Vue Element前端應(yīng)用開發(fā)之獲取后端數(shù)據(jù),對(duì)vue感興趣的同學(xué),可以參考下

概述

在前面隨筆《循序漸進(jìn)VUE+Element 前端應(yīng)用開發(fā)之動(dòng)態(tài)菜單和路由的關(guān)聯(lián)處理》中介紹了在Vue + Element整合框架中,實(shí)現(xiàn)了動(dòng)態(tài)菜單和動(dòng)態(tài)路由的處理,從而可以根據(jù)用戶角色對(duì)應(yīng)的菜單實(shí)現(xiàn)本地路由的過濾和綁定,菜單順利弄好了,就需要進(jìn)一步開發(fā)頁面功能了,本篇隨筆介紹一個(gè)案例,通過獲取后端數(shù)據(jù)后,進(jìn)行產(chǎn)品信息頁面的處理。

1、后端數(shù)據(jù)的獲取處理

前后端的邊界則非常清晰,前端可以在通過網(wǎng)絡(luò)獲取對(duì)應(yīng)的JSON就可以構(gòu)建前端的應(yīng)用了。

我們通過Vue.config.js的配置信息,可以指定Proxy來處理是本地Mock數(shù)據(jù)還是實(shí)際的后端數(shù)據(jù),如下所示。

我們要跨域請(qǐng)求數(shù)據(jù),在配置文件里設(shè)置代理,vue-cli3項(xiàng)目,需要在vue.config.js里面寫配置。

我們創(chuàng)建了一些操作數(shù)據(jù)的API類文件,每個(gè)API名稱對(duì)應(yīng)一個(gè)業(yè)務(wù)的集中處理,包括特定業(yè)務(wù)的列表請(qǐng)求、單個(gè)請(qǐng)求、增加、刪除、修改等等都可以封裝在一個(gè)API類里面。

然后在對(duì)應(yīng)的業(yè)務(wù)API訪問類,如product.js 里面定義我們的請(qǐng)求邏輯,主要就是利用簡單封裝axios的request輔助類來實(shí)現(xiàn)數(shù)據(jù)的請(qǐng)求。

下一步就是在src/views/product目錄里面定義我們的視圖文件,這個(gè)也就是頁面文件,其中包含了常規(guī)VUE的幾個(gè)部分,包括

<template>
  
</template>

<script>
export default {

}
</script>

<style>

</style>

其中在<template>里面的是界面元素部分,可以添加我們相關(guān)的界面組件等內(nèi)容,如element的界面組件在里面。

其中<script>是vue腳本交互的部分了,這里面封裝我們很多處理邏輯和對(duì)應(yīng)的modal對(duì)象信息,在調(diào)用API類進(jìn)行訪問數(shù)據(jù)前,我們往往需要引入對(duì)應(yīng)的API類文件,如下所示。

import { GetTopBanners, GetProductList } from '@/api/product'

其中<style>則定義相關(guān)的樣式。

在開始介紹Vue 的Script部分,我們認(rèn)為你已經(jīng)對(duì)VUE的script相關(guān)內(nèi)容,以及它的生命周期有所了解了,script部分的內(nèi)容包括有。

<script>
export default {
  data() {
    return {};
  },
  methods: {
    // 組件的方法
  },
  watch: {
    // watch擅長處理的場景:一個(gè)數(shù)據(jù)影響多個(gè)數(shù)據(jù)
  },
  computed: {
    // computed擅長處理的場景:一個(gè)數(shù)據(jù)受多個(gè)數(shù)據(jù)影響
  },
  beforeCreate: function() {
    // 在實(shí)例初始化之后,數(shù)據(jù)觀測(data observer) 和 event/watcher 事件配置之前被調(diào)用。
  },
  created: function() {
    // 實(shí)例已經(jīng)創(chuàng)建完成之后被調(diào)用。在這一步,實(shí)例已完成以下的配置:數(shù)據(jù)觀測(data observer),屬性和方法的運(yùn)算, watch/event 事件回調(diào)。然而,掛載階段還沒開始,$el 屬性目前不可見。
  },
  beforeMount: function() {
    // 在掛載開始之前被調(diào)用:相關(guān)的 render 函數(shù)首次被調(diào)用。
  },
  mounted: function() {
    // 編譯好的HTML掛載到頁面完成后執(zhí)行的事件鉤子
    // el 被新創(chuàng)建的 vm.$el 替換,并掛載到實(shí)例上去之后調(diào)用該鉤子。
    // 此鉤子函數(shù)中一般會(huì)做一些ajax請(qǐng)求獲取數(shù)據(jù)進(jìn)行數(shù)據(jù)初始化
    console.log("Home done");
  },
  beforeUpdate: function() {
    // 數(shù)據(jù)更新時(shí)調(diào)用,發(fā)生在虛擬 DOM 重新渲染和打補(bǔ)丁之前。 你可以在這個(gè)鉤子中進(jìn)一步地更改狀態(tài),這不會(huì)觸發(fā)附加的重渲染過程。
  },
  updated: function() {
    // 由于數(shù)據(jù)更改導(dǎo)致的虛擬 DOM 重新渲染和打補(bǔ)丁,在這之后會(huì)調(diào)用該鉤子。
    // 當(dāng)這個(gè)鉤子被調(diào)用時(shí),組件 DOM 已經(jīng)更新,所以你現(xiàn)在可以執(zhí)行依賴于 DOM 的操作。然而在大多數(shù)情況下,你應(yīng)該避免在此期間更改狀態(tài),因?yàn)檫@可能會(huì)導(dǎo)致更新無限循環(huán)。
    // 該鉤子在服務(wù)器端渲染期間不被調(diào)用。
  },
  beforeDestroy: function() {
    // 實(shí)例銷毀之前調(diào)用。在這一步,實(shí)例仍然完全可用。
  },
  destroyed: function() {
    // Vue 實(shí)例銷毀后調(diào)用。調(diào)用后,Vue 實(shí)例指示的所有東西都會(huì)解綁定,所有的事件監(jiān)聽器會(huì)被移除,所有的子實(shí)例也會(huì)被銷毀。 該鉤子在服務(wù)器端渲染期間不被調(diào)用。
  }
};
</script>

其中我們主要涉及到內(nèi)容包括:

data,用于定義整個(gè)頁面的modal對(duì)象或?qū)傩裕?/p>

method,用于定義各種處理方法

computed,用于定義一些計(jì)算的樹形

created,用于我們?cè)谠貏?chuàng)建,但是沒有掛載的時(shí)候

mounted,完成頁面掛載的時(shí)候

2、界面展示處理

例如我們要展示一個(gè)界面內(nèi)容,需要展示產(chǎn)品的圖片,以及產(chǎn)品信息介紹

那么需要定義相關(guān)的數(shù)據(jù)模板,以及對(duì)應(yīng)的處理方法,在頁面加載前實(shí)現(xiàn)數(shù)據(jù)的綁定處理。

export default {
  data() {
    return {
      activeName: 'all',
      currentDate: new Date(),
      banners: [],
      productlist: [],
      pageinfo: {
        pageindex: 1,
        pagesize: 10,
        total: 0
      },
      producttype: 'all'
    };
  },
  created() {
    this.loadbanners()
    this.getlist()
  },

界面部分,我們利用Element的界面組件定義一個(gè)走馬燈的展示效果,如下所示。

在Template模塊里面定義好的界面元素如下所示。

這里面的el-carousel 是Element組件的走馬燈,而v-for="iteminbanners" 就是vue的處理語法,對(duì)data模型里面的數(shù)據(jù)進(jìn)行循環(huán)處理,然后逐一展示多個(gè)圖片,從而實(shí)現(xiàn)了走馬燈的效果展示。

對(duì)于列表展示,我們采用了一個(gè)卡片的展示內(nèi)容,以及分頁處理的方式實(shí)現(xiàn)數(shù)據(jù)的展示。

分類按鈕部分,代碼如下所示。

<el-row :gutter="20" style="padding:20px">
  <el-button type="primary" icon="el-icon-search" :plain="producttype !='all'" @click="handleClick($event, 'all')">全部</el-button>
  <el-button type="success" icon="el-icon-search" :plain="producttype !='1'" @click="handleClick($event, '1')">框架產(chǎn)品</el-button>
  <el-button type="warning" icon="el-icon-search" :plain="producttype !='2'" @click="handleClick($event, '2')">軟件產(chǎn)品</el-button>
  <el-button type="danger" icon="el-icon-search" :plain="producttype !='3'" @click="handleClick($event, '3')">開發(fā)組件</el-button>
</el-row>

主要就是根據(jù)data屬性進(jìn)行一些樣式的控制,以及響應(yīng)對(duì)應(yīng)的click事件。

而每個(gè)卡片內(nèi)容介紹,Demo代碼如下所示。

<el-col :span="4"><div class="grid-content bg-purple" />
<el-card class="box-card">
  <img src="https://shadow.elemecdn.com/app/element/hamburger.9cf7b091-55e9-11e9-a976-7f4d0b07eef6.png" class="image">
  <div style="padding: 14px;">
    <span>好吃的漢堡</span>
    <div class="bottom clearfix">
      <time class="time">價(jià)格:¥200</time>
      <el-button type="text" class="button" @click="loadbanners()">操作按鈕</el-button>
    </div>
  </div>
</el-card>
</el-col>

但是我們要根據(jù)實(shí)際獲得的動(dòng)態(tài)數(shù)據(jù)進(jìn)行綁定,因此需要一個(gè)循環(huán)來進(jìn)行處理,類似上面的v-for循環(huán),對(duì)產(chǎn)品列表進(jìn)行展示即可。

<el-col v-for="(item, index) in productlist" :key="index" :span="4" style="min-width:250px">
<div class="grid-content bg-purple">
  <el-card class="box-card">
    <img :src="item.Picture" class="image" style="width:200px;height:200px">
    <div style="padding: 14px;">
      <span>{{ item.ProductName }}</span>
      <div class="bottom clearfix">
        <!-- <time class="time">價(jià)格:¥{{ item.Price }}</time> -->
        <el-button type="text" class="button">操作按鈕</el-button>
      </div>
    </div>
  </el-card>
</div>
</el-col>

為了有效的請(qǐng)求和展示數(shù)據(jù),我們還需要利用分頁組件來進(jìn)行數(shù)據(jù)的分頁查詢處理,分頁組件界面的定義代碼如下所示。

 <el-pagination
      background
      layout="prev, pager, next"
      :page-sizes="[10,20,50]"
      :total="pageinfo.total"
      :current-page="pageinfo.pageindex"
      :page-size="pageinfo.pagesize"
      @size-change="handleSizeChange"
      @current-change="handleCurrentChange"
    />

為了實(shí)現(xiàn)對(duì)數(shù)據(jù)的分頁,我們需要定義當(dāng)前頁碼、每頁面數(shù)據(jù)大小、總共數(shù)據(jù)記錄數(shù)等幾個(gè)變量,用來進(jìn)行分頁查詢的需要。

我們定義的getList的方法如下所示。

getlist() {
      // 構(gòu)造分頁查詢條件
      var param = {
        type: this.producttype === 'all' ? '' : this.producttype,
        pageindex: this.pageinfo.pageindex,
        pagesize: this.pageinfo.pagesize
      };

      this.listLoading = true
      // 發(fā)起數(shù)據(jù)查詢請(qǐng)求,并設(shè)置本地Data的值
      GetProductList(param).then(data => {
        this.productlist = data.list
        this.pageinfo.total = data.total_count
        this.listLoading = false
      })
    },

另外定義幾個(gè)方法,對(duì)數(shù)據(jù)進(jìn)行查詢的操作。

// 單擊某類別的時(shí)候,進(jìn)行查詢
    handleClick(e, type) {
      // console.log(e, type);

      this.producttype = type
      this.pageinfo.pageindex = 1;

      this.getlist()
    },
    // 頁面數(shù)量改變后查詢處理
    handleSizeChange(val) {
      console.log(`每頁 ${val} 條`);
      this.pageinfo.pagesize = val;
      this.getlist()
    },
    // 頁碼改變后查詢處理
    handleCurrentChange(val) {
      console.log(`當(dāng)前頁: ${val}`);
      this.pageinfo.pageindex = val;
      this.getlist()
    }

以上就是我們利用Element的界面組件,以及Vue的方法進(jìn)行數(shù)據(jù)的分頁查詢請(qǐng)求的基礎(chǔ)操作,通過這個(gè)簡單的案例,我們可以了解一些基礎(chǔ)的Element 界面組件的使用,以及對(duì)Data / Method等內(nèi)容的了解,并指導(dǎo)如何封裝調(diào)用跨域的API請(qǐng)求,實(shí)現(xiàn)后端數(shù)據(jù)在界面上的展示處理了。

以上就是Vue Element前端應(yīng)用開發(fā)之獲取后端數(shù)據(jù)的詳細(xì)內(nèi)容,更多關(guān)于Vue Element獲取后端數(shù)據(jù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue內(nèi)置組件keep-alive事件動(dòng)態(tài)緩存實(shí)例

    vue內(nèi)置組件keep-alive事件動(dòng)態(tài)緩存實(shí)例

    這篇文章主要介紹了vue內(nèi)置組件keep-alive事件動(dòng)態(tài)緩存實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • 詳解Vue的computed(計(jì)算屬性)使用實(shí)例之TodoList

    詳解Vue的computed(計(jì)算屬性)使用實(shí)例之TodoList

    本篇文章主要介紹了詳解Vue的computed(計(jì)算屬性)使用實(shí)例之TodoList,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-08-08
  • TypeScript踩坑之TS7053的問題及解決

    TypeScript踩坑之TS7053的問題及解決

    這篇文章主要介紹了TypeScript踩坑之TS7053的問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • vue開發(fā)利器之unplugin-auto-import的使用

    vue開發(fā)利器之unplugin-auto-import的使用

    unplugin-auto-import 解決了vue3-hook、vue-router、useVue等多個(gè)插件的自動(dòng)導(dǎo)入,也支持自定義插件的自動(dòng)導(dǎo)入,下面這篇文章主要給大家介紹了關(guān)于vue開發(fā)利器之unplugin-auto-import使用的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • 淺談vuex之mutation和action的基本使用

    淺談vuex之mutation和action的基本使用

    本篇文章主要介紹了淺談vuex之mutation和action的基本使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • vue 詳情跳轉(zhuǎn)至列表頁實(shí)現(xiàn)列表頁緩存

    vue 詳情跳轉(zhuǎn)至列表頁實(shí)現(xiàn)列表頁緩存

    這篇文章主要介紹了vue 詳情跳轉(zhuǎn)至列表頁實(shí)現(xiàn)列表頁緩存,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • vue觸發(fā)真實(shí)的點(diǎn)擊事件跟用戶行為一致問題

    vue觸發(fā)真實(shí)的點(diǎn)擊事件跟用戶行為一致問題

    這篇文章主要介紹了vue觸發(fā)真實(shí)的點(diǎn)擊事件跟用戶行為一致問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vue中如何動(dòng)態(tài)獲取剩余區(qū)域的滾動(dòng)高度

    vue中如何動(dòng)態(tài)獲取剩余區(qū)域的滾動(dòng)高度

    這篇文章主要介紹了vue中如何動(dòng)態(tài)獲取剩余區(qū)域的滾動(dòng)高度問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Vue基于NUXT的SSR詳解

    Vue基于NUXT的SSR詳解

    這篇文章主要介紹了Vue基于NUXT的SSR詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • Vue ECharts餅圖實(shí)現(xiàn)方法詳解

    Vue ECharts餅圖實(shí)現(xiàn)方法詳解

    這篇文章主要介紹了在vue.js中,使用echarts組件,創(chuàng)建一個(gè)餅圖,并且獲取餅圖的數(shù)據(jù)和屬性,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-12-12

最新評(píng)論

德安县| 蓬莱市| 成安县| 永登县| 庆元县| 麻城市| 阜宁县| 永定县| 湖北省| 屯昌县| 比如县| 定州市| 日照市| 常宁市| 呼伦贝尔市| 洞口县| 临洮县| 遂宁市| 阳信县| 肇源县| 台湾省| 醴陵市| 东丰县| 吉安县| 泰兴市| 河东区| 嘉祥县| 镇赉县| 巢湖市| 教育| 县级市| 封开县| 麻阳| 土默特左旗| 高台县| 三河市| 永寿县| 内黄县| 高邑县| 阿荣旗| 泽州县|