亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

基于 vue-skeleton-webpack-plugin 的骨架屏實戰

2019-11-19 11:04:38
字體:
來源:轉載
供稿:網友

前言

目前正在做的項目,登錄是需要跳轉到別人的頁面的,導致重定向很多,需要優化一下白屏時間,所以就用到了骨架屏,但是這次用的骨架屏不是自動生成的,還是自己敲的樣式,一步步來吧,先從簡單的用起 。

先上效果圖:

 

什么是骨架屏

骨架屏,英文 Skeleton screen ,是指在頁面開始渲染之前的白屏時間內,先讓用戶看到即將要展現頁面的“骨架”,頁面渲染完成之后再將它替換掉,起到一個從 白屏 → 渲染完成 過程中的過渡作用,它可以有效減少用戶的感知時間,讓用戶“感覺上”認為打開頁面比較快(相比較于完整的白屏時間)。

實現

本文主要圍繞一個開源的 Webpack 插件 vue-skeleton-webpack-plugin ,來實現在 Vue 項目中加入骨架屏。

由于項目對骨架屏的需求不同,相應的代碼也會不一樣。 本文所實現的骨架屏是 基于 Vue-cli 3.x 搭建的項目 ,根據的不同路由,顯示不同的骨架屏,如需其他用法詳見開源插件。

讓我們開始吧:surfer:。

首先是安裝插件:

npm install vue-skeleton-webpack-plugin

vue.config.js

安裝完成后在 vue.config.js 中做如下配置:

const SkeletonWebpackPlugin = require('vue-skeleton-webpack-plugin')module.exports = { configureWebpack: (config) => {  config.plugins.push(new SkeletonWebpackPlugin({   webpackConfig: {    entry: {     app: path.join(__dirname, './src/skeleton/skeleton.js')    }   },   // SPA 下是壓縮注入 HTML 的 JS 代碼   minimize: true,   // 服務端渲染時是否需要輸出信息到控制臺   quiet: true,   // 根據路由顯示骨架屏   router: {     mode: 'history',     routes: [      {       path: '/',       skeletonId: 'skeleton-home'      },      {       path: '/message',       skeletonId: 'skeleton-message'      }     ]   }  } }, css: {  // 使用 css 分離插件 mini-css-extract-plugin,不然骨架屏組件里的 <style> 不起作用,  extract: true, }}

其中 skeleton.js 是我們骨架屏的入口,我們過會再創建。先看來一下其中 router 這個配置項。

router的配置決定了我們各個路由路徑所對應的骨架屏。

  • router.mode 填路由模式,兩個值可選 history | hash.
  • router.routes 填路由數組,其中 path 對應著頁面在 vue-router 中的 path , skeletonId 是骨架屏的 id ,后面馬上會說明。

 skeleton.js

配置完成后,新建一個骨架屏的入口 skeleton.js。

// src/skeleton/skeleton.jsimport Vue from 'vue'// 引入的骨架屏組件import skeletonHome from './skeleton/skeletonHome.vue'import skeletonMessage from './skeleton/skeletonMessage.vue'export default new Vue({ components: {  skeletonHome,  skeletonMessage, }, template: `  <div>   <skeletonHome id="skeleton-home" style="display:none"/>   <skeletonMessage id="skeleton-message" style="display:none"/>  </div> `})

上面的代碼中,引入的兩個組件分別對應 首頁(Home)消息頁(Message) 的骨架屏,其中組件的 id 對應之前在 vue.config.jsskeletonId 。

貼上其中一個骨架屏組件的代碼:

// skeletonMessage.vue<template> <div class="skeleton-block">  <div class="sk-loanList-header-bg"></div>  <s-messageItem/>  <s-messageItem/>  <s-messageItem/>  <s-messageItem/> </div></template><script>import messageItem from './components/s-messageListItem'export default { name: 'skeletonMessage', components: {  's-messageItem': messageItem }}</script><style scoped>.skeleton-block { width:100%; height: 100vh;}.sk-loanList-header-bg { height:88px; background:#2954D0;}</style>

其實就是很普通的一個 Vue 組件,在組件里寫自己想要的骨架屏的樣式即可,可復用的地方還可以再分成組件。 在路由里加上 skeletonMessage ,看一下效果:

至此,現在骨架屏已經準備就緒了,是不是很簡單 。

效果展示

這邊模擬一下移動端訪問環境,先進入 Chrome DevTools 中的 Performance 進行設置。

運行 Performance:

效果:

從骨架屏替換成頁面的過程中還是有閃一下的,目前還不知道這個是否可以優化,嘗試中。

查看一下 Performance 中不同頁面展現的時間:

 

(ps:解釋一下,我也不知道什么情況,運行完之后就是尼:horse:這么糊...)

可以看到在通過本地運行訪問的情況下(本地訪問較快),在進入頁面后 221ms 頁面先展示骨架屏,隨后在 738ms 時完成頁面的渲染。

這里如果不加骨架屏的話就是 738ms 的白屏時間,我們已經通過骨架屏優化了一些白屏時間:surfer:。

最后

vue-skeleton-webpack-plugin 是較為初級的骨架屏方案,相信大家也可以馬上想到許多缺點。
比如:

  • 需要手動去寫骨架屏的樣式。
  • 骨架屏樣式在不同尺寸下的響應式問題。
  • 在界面改動之后也需要手動修改對應的骨架屏。

由于在本人的項目中使用到了 postcss-px2rem 自動 px 轉 rem,所以避開了一些缺點。

其他方法

此外還有許多使用骨架屏的方法:

page-skeleton-webpack-plugin 餓了么開源的自動生成骨架屏生成插件。

用 base64 的圖片做骨架屏,就讓 UI 在出設計稿的時候順便把骨架屏也給畫了😂。

參考:
http://www.49028c.com/article/166912.htm

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久这里只有精品| 538国产精品一区二区在线| 国产精品福利观看| 欧美成年人视频网站| 91欧美精品成人综合在线观看| 国产999在线| 国产九九精品视频| 欧美成人午夜激情视频| 国产日韩精品在线观看| 日本一区二区三区在线播放| 亚洲第一天堂av| 成人高清视频观看www| 欧美激情在线视频二区| 色诱女教师一区二区三区| 欧美性极品xxxx做受| 美日韩精品视频免费看| 日韩欧美国产网站| 日韩成人在线网站| 欧美黄色片免费观看| 亚洲欧洲免费视频| 日韩精品丝袜在线| 91在线观看免费高清完整版在线观看| 日韩免费在线观看视频| 大伊人狠狠躁夜夜躁av一区| 亚洲欧美另类在线观看| 国产精品久久久久久久久久ktv| 国产丝袜精品视频| 欧美成人激情图片网| 日韩免费在线播放| 色综合色综合网色综合| 久久精品国产96久久久香蕉| 成人精品一区二区三区| 日韩欧美成人网| 亚洲国产欧美日韩精品| 日韩av在线精品| 在线成人中文字幕| 国产精品视频精品视频| 日韩免费在线看| 精品久久久久久久久久久| 国产成人综合精品在线| 中文字幕日韩在线视频| 亚洲资源在线看| 狠狠躁天天躁日日躁欧美| 亚洲精品456在线播放狼人| 日韩中文在线中文网在线观看| 欧美怡春院一区二区三区| 久久国产精品影片| 国产日产欧美精品| 91精品国产色综合久久不卡98口| 国产在线观看一区二区三区| 中文字幕欧美日韩| 中文字幕国产日韩| 亚洲欧美日韩一区二区三区在线| 中文字幕在线视频日韩| 欧美激情视频网站| 日韩激情视频在线播放| 亚洲人成在线电影| 91精品久久久久久久久不口人| 神马国产精品影院av| 国内精品美女av在线播放| 亚洲最新在线视频| 在线午夜精品自拍| 欧美激情网站在线观看| 亚洲国产欧美在线成人app| 欧美一级片免费在线| 欧美成人合集magnet| 成人黄色av免费在线观看| 国产精自产拍久久久久久蜜| 久久精品2019中文字幕| 伊人成人开心激情综合网| 一本大道香蕉久在线播放29| 欧美最猛性xxxxx(亚洲精品)| 538国产精品视频一区二区| 国产日韩欧美电影在线观看| 欧美亚洲国产视频| 国产精品h片在线播放| 亚洲一区精品电影| 国产在线视频欧美| 日本精品视频在线| 亚洲色图第一页| 久热精品视频在线观看| 日韩亚洲国产中文字幕| 日韩av一区在线观看| 成年人精品视频| 久久久久亚洲精品成人网小说| 国产91精品黑色丝袜高跟鞋| 国产亚洲欧洲高清一区| 亚洲精品视频免费在线观看| 在线播放国产一区中文字幕剧情欧美| 亚洲精品日韩激情在线电影| 亚洲www视频| 亚洲片国产一区一级在线观看| 久久影视电视剧免费网站| 日韩电影免费在线观看中文字幕| 97国产精品视频人人做人人爱| 欧美亚洲国产日本| 少妇激情综合网| 欧美最顶级的aⅴ艳星| 国产精品96久久久久久| 色多多国产成人永久免费网站| 2019最新中文字幕| 理论片在线不卡免费观看| 欧美做受高潮1| 日韩欧美黄色动漫| 久久91亚洲精品中文字幕| 亚洲成人久久久久| 日韩av免费在线| 国产精品亚洲片夜色在线| 欧洲日本亚洲国产区| 91日本视频在线| 国模精品视频一区二区三区| 欧美小视频在线| 久久久人成影片一区二区三区| 国产97在线播放| 青青在线视频一区二区三区| 国产精品一区av| 中文字幕免费国产精品| 日韩视频免费观看| 欧美在线视频免费播放| 7m第一福利500精品视频| 国产精品久久77777| 中文字幕自拍vr一区二区三区| 亚洲国产天堂网精品网站| 色综合亚洲精品激情狠狠| 97在线视频免费播放| 成人国产精品一区二区| 成人在线免费观看视视频| 亚洲电影在线看| 国产在线观看精品一区二区三区| 欧美野外wwwxxx| 精品国产一区二区三区久久| 色播久久人人爽人人爽人人片视av| 国产精品亚洲综合天堂夜夜| 美女扒开尿口让男人操亚洲视频网站| 日韩影视在线观看| 精品久久久久久久久中文字幕| 欧美日韩精品国产| 亚洲春色另类小说| 久久久之久亚州精品露出| 丁香五六月婷婷久久激情| 亚洲人成在线观看网站高清| 欧美另类极品videosbest最新版本| 国产亚洲视频在线| 日韩欧美精品网址| 久久精视频免费在线久久完整在线看| 日韩中文在线不卡| 国产极品精品在线观看| 亚洲欧美日韩直播| 欧美精品一二区| 狠狠色狠色综合曰曰| 欧洲亚洲免费在线| 欧美亚州一区二区三区| 国产伦精品免费视频| 亚洲日韩欧美视频| 日本最新高清不卡中文字幕| 国产91对白在线播放| 亚洲va男人天堂| 中文.日本.精品| 成人黄色生活片| 亚洲女人天堂网| 91精品国产91久久久久福利| 97国产真实伦对白精彩视频8| 亚洲成人aaa| 一区二区三区视频免费|