黄视频网站在线免费观看-黄视频网站在线看-黄视频网站在线观看-黄视频网站免费看-黄视频网站免费观看-黄视频网站免费

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 手把手帶你用vue實現全屏loading插件

手把手帶你用vue實現全屏loading插件

來源:千鋒教育
發布人:wjy
時間: 2022-06-06 11:33:00 1654486380

## 前言:

由于我們打開網頁時,瀏覽器與服務器交互需要時間,受限于寬帶以及服務器性能,導致用戶在訪問一個網頁時,往往需要一個等待期,才能在瀏覽器中真正完全展示出網頁內容。在網頁加載過程中網頁就是一片空白,對于我們用戶而言,我們看到一片空白,還以為網站 "掛掉了",就很憂傷!!

手把手帶你用實現vue全屏loading插件

當然了,我們針對這個問題,各大網站都有自己的解決方案。

有的網站會用骨架屏。

比如掘金:利用骨架屏,給用戶提醒,網站內容馬上呈現給您,不要著急!

有的網站會選擇在數據出來之前 定義一個全屏的loading,提供用于網站正在加載

比如:網站在加載時以及網站刷新時,會彈出全屏loading。

## 文章目的:

今天我們就要帶大家實現,在vue開發的前后端分離應用中,實現在網頁加載以及刷新時,實現如上圖全屏loading的效果!

### 功能分析

vue項目中所有的請求一般都是通過axios,所以我們需要給axios新增請求和響應攔截,在請求攔截中顯示loading,和響應攔截中關閉loading。

所以我們需要定義兩個全局方法,一個是顯示loading,叫$showLoading(),另一個叫$hideLoading()關閉全屏loading。

### 代碼實現

上面的梳理,我們明確了,需要定義兩個全局方法,一個顯示loading一個關閉loading,這里我們定義一個Vue的插件通過插件動態給實例安裝 顯示和關閉Loading方法。

- 定義$loading插件,在Vue構造函數原型上添加兩個方法

以下loading.js代碼

```text
const $loading = {
    install: (Vue) => {
        // 添加 顯示loading方法
        Vue.prototype.$showLoading = () => {
            console.log('loading顯示')
        }
        // 添加關閉loading方法
        Vue.prototype.$hideLoading = () => {
            console.log('loading關閉')
        }
    }
}
export default $loading;
// 使用時 在main.js入口函數中引入 使用插件即可安裝
Vue.use($loading)
```

- 添加axios請求和響應攔截,調用顯示和關閉loading方法

```text
import Vue from 'vue'
// 定義Vue實例 調用全局顯示和關閉loading方法
const vm = new Vue()
// 請求攔截
axios.interceptors.request.use(function (config) {
  // 在這里調用 顯示loading方法
    vm.$showLoading()
  return config
}, function (error) {
    vm.$hideLoading()
  // 在請求出錯調用 關閉loading方法
   
  return Promise.reject(error)
})
// 響應攔截
axios.interceptors.response.use(function (response) {
  // 在這里調用 關閉loading方法
    vm.$hideLoading()
  return response
}, function (error) {
  // 在這里調用 關閉loading方法
    vm.$hideLoading()
  return Promise.reject(error)
}
```

此時首頁有三次請求,顯示了三次loading顯示和loading關閉!

當然我們 在數據請求不是打印,而是 顯示loading,數據過來時應該關閉loading,所以接下來我們實現這兩個效果

- 通過單文件組件 定義顯示loading結構

我們目前的問題是,在顯示loading時不是打印而是要顯示全局loading的html結構,在關閉loading時要隱藏!

為了實現這個需求,我們通過vue的單文件組件來定義loading的html結構和控制loading顯示隱藏

loading.vue

```text
<template>
 <!--
  mask是loading的背景 v-show控制loading顯示消失
 -->
 <div class="mask" v-show="isShow">       
        <div class="loading"></div>        
    </div>
    </div>
</template>
<script>
export default {
    data () {
        return {
            // loading默認不顯示
            isShow: false
        }
    }
}
</script>
<style lang="scss">
 // 定義動畫 控制 loading旋轉
@keyframes rotate {
  0%{
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}
.mask{
  position: fixed;
  left:0;
  right:0;
  top:0;
  bottom:0;
  background-color: rgba(0,0,0,.7);
  z-index: 10000;
  display: flex;
  align-items: center;
  justify-content: center;
  .loading{
    width: 30px;
    height: 30px;
    border: 6px solid rgb(219, 140, 13);
    border-radius: 21px;
    border-left-color:transparent;
    animation: rotate 500ms infinite;
  }
}
</style>
```

- loading.js中獲取單文件組件 html結構 并在 $showLoading方法調用時顯示,在$hideLoading時隱藏

loading.js中

```js
import LoadingVue from './loading.vue'
const $loading = {
    install: (Vue) => {
        // 通過 Vue.extend方法 獲取LoadingComponent 組件 類
        const LoadingComponent = Vue.extend(LoadingVue);
        // new LoadingComponent得到組件的實例
        const vm = new LoadingComponent();
        // 獲取組件實例的html 并插入到body中
        const tpl = vm.$mount().$el;
        // 插入到body中
        document.body.appendChild(tpl);
        // 添加 顯示loading方法
        Vue.prototype.$showLoading = () => {
            // 通過改變實例 .mask v-show綁定變量控制顯示
            vm.isShow = true
        }
        // 添加關閉loading方法
        Vue.prototype.$hideLoading = () => {
            // 通過改變實例 .mask v-show綁定變量控制隱藏
            vm.isShow = false
        }
    }
}
```

最后在main.js中使用插件 在axios攔截器中控制顯示隱藏就ok啦!!

main.js

```js
import Vue from 'vue'
import loading from './plugins/loading'
Vue.use(loading)// 構造函數原型上就添加了$showLoading和$hideLoading方法
```

axios攔截器中使用

```js
import Vue from 'vue'
// 定義Vue實例 調用全局顯示和關閉loading方法
const vm = new Vue()
// 請求攔截
axios.interceptors.request.use(function (config) {
  // 在這里調用 顯示loading方法
    vm.$showLoading()
  return config
}, function (error) {
    vm.$hideLoading()
  // 在請求出錯調用 關閉loading方法

  return Promise.reject(error)
})
// 響應攔截
axios.interceptors.response.use(function (response) {
  // 在這里調用 關閉loading方法
    vm.$hideLoading()
  return response
}, function (error) {
  // 在這里調用 關閉loading方法
    vm.$hideLoading()
  return Promise.reject(error)
}
```

是不是很棒,好啦我們的vue全屏loading插件到這里就完成了,小伙伴們回去試一試吧。

更多關于web培訓的問題,歡迎咨詢千鋒教育在線名師。千鋒教育擁有多年IT培訓服務經驗,采用全程面授高品質、高體驗培養模式,擁有國內一體化教學管理及學員服務,助力更多學員實現高薪夢想。

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
黄色短视屏| 欧美国产日韩在线| 香蕉视频三级| 成人免费高清视频| a级毛片免费观看网站| 色综合久久天天综线观看| 精品久久久久久中文字幕2017| 韩国毛片 免费| 午夜久久网| 国产成人精品在线| 国产高清视频免费观看| 国产极品白嫩美女在线观看看 | 欧美激情影院| 精品久久久久久综合网| 麻豆系列 在线视频| 国产高清视频免费观看| 成人在激情在线视频| 国产激情一区二区三区| 久久久久久久男人的天堂| 日日爽天天| 国产一区二区精品| 国产91精品一区| 国产伦精品一区二区三区无广告| 麻豆网站在线免费观看| 韩国三级视频在线观看| 91麻豆精品国产片在线观看| 日韩中文字幕在线观看视频| 毛片高清| 黄视频网站免费| 久久国产精品自由自在| 国产一区二区精品| 日韩在线观看视频免费| 日本在线不卡免费视频一区| 韩国三级视频网站| 免费国产一级特黄aa大片在线| 美女免费精品视频在线观看| 午夜家庭影院| 午夜精品国产自在现线拍| 精品视频在线观看视频免费视频 | 欧美国产日韩精品| 久久99这里只有精品国产| 国产激情视频在线观看| 日本免费看视频| 沈樵在线观看福利| 国产不卡在线观看| 亚洲 国产精品 日韩| 成人免费网站久久久| 成人免费高清视频| 欧美一级视频免费观看| 精品国产一区二区三区免费| 欧美激情一区二区三区中文字幕| 久久精品免视看国产成人2021| 成人免费观看男女羞羞视频| 黄视频网站在线免费观看| 国产网站在线| 欧美大片aaaa一级毛片| 欧美激情一区二区三区在线播放| 国产伦理精品| 国产91精品一区二区| 亚洲wwwwww| 国产一区二区精品| 欧美大片a一级毛片视频| 久久精品免视看国产明星| 麻豆系列国产剧在线观看| 二级片在线观看| 美女免费精品视频在线观看| 久久精品欧美一区二区| 你懂的在线观看视频| 国产成人精品综合在线| 亚久久伊人精品青青草原2020| 国产a视频| 欧美1区| 欧美激情一区二区三区视频| 国产一区二区精品久| 麻豆系列 在线视频| 欧美国产日韩在线| 精品视频在线观看一区二区| 久久久久久久男人的天堂| 精品视频免费看| 国产成人精品综合| 欧美日本国产| 国产高清在线精品一区a| 久久国产一久久高清| 欧美激情一区二区三区视频 | 欧美一区二区三区在线观看| 日韩免费片| 欧美a免费| 精品视频免费观看| 日韩在线观看免费| 久久99爰这里有精品国产| 美女免费精品视频在线观看| 99久久精品国产片| 99久久精品国产片| 成人高清视频在线观看| 91麻豆国产| 人人干人人插| 久久久久久久久综合影视网| 国产精品自拍亚洲| 欧美大片aaaa一级毛片| 欧美一区二区三区在线观看| 精品视频在线观看视频免费视频| 欧美1卡一卡二卡三新区| 亚洲女初尝黑人巨高清在线观看| 精品视频在线看| 91麻豆国产| 国产一区二区精品久久91| 九九久久99综合一区二区| 国产国语对白一级毛片| 999久久狠狠免费精品| 天天做日日爱| 四虎影视久久久| 中文字幕97| 久久国产精品只做精品| 午夜在线亚洲| 国产高清在线精品一区a| 色综合久久天天综合绕观看| 国产一区二区福利久久| 青草国产在线| 99久久精品费精品国产一区二区| 国产不卡在线播放| 国产麻豆精品视频| 国产不卡高清在线观看视频| 高清一级毛片一本到免费观看| 国产成人精品综合在线| 成人在免费观看视频国产| 国产精品免费久久| 国产视频网站在线观看| 国产成人啪精品| a级毛片免费全部播放| 亚欧视频在线| 免费国产在线观看| 亚洲 国产精品 日韩| 欧美激情一区二区三区在线| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 成人a大片高清在线观看| 久久国产精品永久免费网站| 国产精品免费久久| 日韩一级黄色大片| 国产伦久视频免费观看视频| 免费一级片在线| 麻豆网站在线看| 国产麻豆精品| 国产91精品系列在线观看| 欧美国产日韩精品| 国产麻豆精品| 国产伦精品一区二区三区无广告| 国产视频一区二区在线播放| 精品视频一区二区| 久久精品免视看国产成人2021| 亚欧成人毛片一区二区三区四区| 日韩一级精品视频在线观看| 日韩欧美一二三区| 精品久久久久久影院免费| 精品久久久久久中文字幕2017| 国产一级强片在线观看| 亚洲天堂在线播放| 韩国三级视频在线观看| 国产一区二区精品久久| 九九精品影院| 黄色福利片| 国产成人女人在线视频观看| 国产高清在线精品一区a| 韩国毛片| 成人av在线播放| 日本特黄特色aaa大片免费| 日韩专区亚洲综合久久| 久久国产精品自由自在| 日韩在线观看免费| 成人免费观看视频| 日韩免费在线观看视频| 欧美另类videosbestsex久久| 午夜精品国产自在现线拍| 日韩中文字幕在线观看视频| 欧美1卡一卡二卡三新区| 国产伦理精品| 国产网站麻豆精品视频| 二级特黄绝大片免费视频大片| 99色吧| 午夜精品国产自在现线拍| 香蕉视频久久| 国产精品自拍亚洲| 国产伦精品一区三区视频| 国产视频一区在线| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 午夜在线影院| 欧美国产日韩在线| 99色视频在线| 国产伦理精品| 青青青草影院 | 天天做人人爱夜夜爽2020| 日韩中文字幕在线亚洲一区| 99久久精品国产免费| 精品视频在线看 | 久久精品欧美一区二区| 99色精品| 中文字幕一区二区三区精彩视频| 天天做日日爱| 国产不卡福利| 日本特黄特色aa大片免费| 日日日夜夜操|