亚洲 国产精品 日韩-亚洲 激情-亚洲 欧美 91-亚洲 欧美 成人日韩-青青青草视频在线观看-青青青草影院

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

手機站
千鋒教育

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

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

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

當前位置:首頁  >  技術干貨  > 手把手帶你用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
幼儿HIPHOP张婉莹仙踪网| 一边摸一边吃奶一边做爽| 亚洲AV无码成人精品区百度| 亚洲日韩中文字幕日本| 18VIDEOSEX性欧美| 不惑女人的扭曲生活| 国产精品自在线拍国产电影| 久久久久久精品免费免费直播| 你的棒棒可以桶桶我的下水道| 日日摸夜夜添无码无码AV| 亚洲AV片不卡无码一| 中国GAY片男同志免费网站| 吃花核心舌头在里面旋转| 国产在线精品一品二区| 男女一起差差差差差| 天堂MV在线MV免费MV香蕉| 亚洲熟妇色av一区二区浪潮| VPSWINDOWS另类精品| 国产亚洲精品无码不卡| 男生J桶进女人P又色又爽又黄| 四虎国产精品永久入口| 夜夜躁狠狠躁日日躁孕妇| 成年网站未满十八禁在线观看| 韩国电影理伦片完整| 男生白内裤自慰GV白袜男同| 乌克兰ZOOMKOOL| 中国又粗又大XXXXBBBB| 国产成人综合一区人人| 老司机午夜精品99久久免费| 色五月丁香五月综合五月亚洲| 亚洲欧美日本A∨在线观看| 啊灬啊灬啊灬快灬高潮了AV| 国精产品一二二线网站 | 色欲色香天天天综合无码| 亚洲精品无码不卡AV| 播放男人添女人下边视频 | 欧美96在线 | 欧| 无套内谢孕妇毛片免费看看| 中文字幕人妻丝袜乱一区三区| 公玩弄年轻人妻HD| 麻豆亚洲国产成人精品无码区| 天天狠天天透天天爱综合| 一区二区日韩视频| 国产精品成人AV电影不卡| 另类小说激情婷婷久久| 无码超乳爆乳中文字幕久久| √BT天堂网WWW中文在线| 国产无套码AⅤ在线观看在线播放| 女人扒下裤让男人桶到爽| 亚洲AV无码专区色爱天堂老鸭| chinese老女人老熟妇hd| 机长脔到她哭H粗话H动漫| 日韩精品人妻系列无码专区免费 | 久久久久久久女国产乱让韩| 天天综合天天做天天综合| 99久久精品国产免费看| 精品人妻一区二区三区浪潮在线| 日出水了好深好涨| 中文字幕AV一区中文字幕天堂 | 性荡视频播放在线视频7777| 瑜伽裤国产一区二区三区| 国产精品久久久久精品三级卜| 泷泽萝拉AV种子| 婷婷开心色四房播播| 99精品久久99久久久久| 狠狠色丁香久久综合| 上司人妻互换HD无码| 9999久久久久精品无码| 精品中文字幕久久久无码中文Av| 手机免费AV片在线观看| AV无码中文字幕不卡一区二区三| 极品无码国模国产在线观看 | 初小VIDEOS第一次摘花| 免费AV资源网站| 亚洲区综合区小说区激情区| 国产精品久久久久久TV| 日韩A∨精品日韩在线观看| 中文无码AV一区二区三区| 精东天美麻豆果冻传媒MV| 无码H黄肉动漫在线观看999| 被窝里的翁憩二十六| 蜜桃视频在线观看| 亚洲一线产区二线产区区别在| 国产三级精品三级在专区| 搡搡BB搡搡搡搡BBB| VODAFONEWIFI巨大黑| 美女内射无套日韩免费播放| 亚洲欧洲日产国码无码| 国产又粗老女人又硬又爽| 同性男男黄G片免费网站| 成人片黄网站色大片免费观看AP| 男男av在线播放| 亚洲中文字幕无码专区| 狠狠色综合网站久久久久久久| 无码AV中文字幕久久专区| 粉嫩虎白女流水白浆在线播放| 欧美午夜性春猛交ⅩXXX男| 中文字日产幕码三区做法| 久久亚洲私人国产精品| 亚洲色无码专区一区| 精品国产综合区久久久久久| 亚洲AV无码专区亚洲AV手机版| 国产乱人伦精品一区二区| 我和闺蜜在公交被八个人挤倒| 丰满妇女强高潮18ⅩXXXHD| 人妻少妇乱孑伦无码专区蜜柚| 99热国产这里只有精品无卡顿| 免费下载破解看片APP的软件| 曰韩无码AV片免费播放不卡| 久久亚洲国产成人精品无码区 | 女人被躁到高潮嗷嗷叫小说百度 | 欧美性大战XXXXX| A亚洲VA欧美VA国产综合| 欧美XXXX做受欧美.88| 2020国产精品永久在线| 乱人伦人妻中文字幕不卡| 真实国产乱人伦在线视频播放| 巨爆乳中文字幕巨爆区巨爆乳无码| 亚洲精品无码你懂的网站| 精品久久久久久久中文字幕| 亚洲内射夜夜嗨av| 久久久国产精品ⅤA麻豆百度| 亚洲综合无码一区二区三区| 久久久老熟女一区二区三区| 一本一道精品欧美中文字幕 | 三上悠亚被弄到痉挛惨叫AV| 成年无码AV片在线| 上司侵犯下属人妻中文字幕| 国产福利一区二区久久| 无码国产精品久久一区免费| 国产欧美精品一区二区三区四区 | A∨色狠狠一区二区三区| 欧美日韩精品人妻一区二区三区| xxxx免费网站| 日韩人妻无码一区二区三区视频| 夫妇联欢会回不去的夜晚樱花| 水多的女人男人最上瘾| 国产裸体歌舞一区二区| 亚洲成AV人片无码天堂下载| 久久不见久久见免费影院国语| 一本无码字幕在钱少妇人妻| 蜜桃久久精品成人无码AV| AⅤ一区二区三区无卡无码| 日本三级欧美三级人妇视频黑白配 | 粗大猛烈进出高潮喷浆H| 无码丰满熟妇浪潮一区二区AV| 国产欧美日韩视频免费| 亚洲日本一本DVD高清| 免费又大粗又爽又黄少妇毛片| FREE俄罗斯免费视频| 色五月丁香五月综合五月亚洲| 国产精品无码久久久久成人影院| 亚洲AV永久无码老湿机漫画| 久久亚洲色WWW成人男男| GOGO人体GOGO西西大尺度| 四虎AV永久在线精品免费观看| 国产一在线精品一区在线观看| 亚洲最新无码中文字幕久久| 欧美乱妇日本无乱码特黄大片| 粉嫩小泬久久久久久久久久小说| 亚洲18色成人网站WWW| 久久夜色精品国产嚕嚕亚洲AV| A级黑粗大硬长爽猛出猛进| 视频二区 爆乳 丰满 熟女| 黑人粗大猛烈XXⅩXXBB| 中国老太卖婬HD播放| 日韩成视频在线精品| 国产午夜片无码区在线观看爱情网| 亚洲伊人五月丁香激情| 欧美高大丰满FREESEX| 国产Chinese男男GayGay网站| 亚洲国产一区二区三区亚瑟| 妺妺窝人体色WWW婷婷| 公共厕所POOPING| 亚洲国产中文在线二区三区免 | 696969大但人文艺术正道| 少妇粉嫩小泬喷水视频| 精品无码人妻少妇久久久久久| GOGO人体大胆高清啪啪| 性少妇JEALOUSVUE片| 免费AV大片在线观看入口| 国产AV寂寞骚妇| 亚洲一线产区二线产区分布图片| 强被迫伦姧惨叫VIDEO| 国产亚洲成AⅤ人片在线观看蜜桃| 真人无码作爱免费视频禁HNN| 少女たちよ在线观看动漫4| 久久精品人人做人人综合试看| 别揉我奶头~嗯~啊~| 亚洲成色WWW久久网站| 欧美熟妇另类久久久久久多毛| 国产免费久久精品国产传媒| 1000部拍拍拍18勿入免费视频下载 | 老乞丐没完没了73节| 国产AV一区二区三区日韩| 亚洲一区二区无码成人AV| 色偷偷人人澡久久超碰97| 久久人人做人人妻人人玩精品HD| 嗯…啊 摸 湿 奶头免费视频| 野花香社区在线视频观看播放|