vue 頁面骨架屏


骨架屏的意思就是,在頁面數據沒有渲染完成之前,把頁面的答題框架展示出來,解決白屏問題,提升用戶體驗

骨架屏實現方式有三種:

一、圖片代替:不靈活,且圖片加載也是需要時間的,不推薦

二、頁面結構寫死:不靈活,不能復用,如果多個頁面需要用到,得寫多個,不推薦

三、通過webpack配置:可靈活配置,可復用,推薦(本篇講解)

1、安裝兩個插件 

  npm install vue-skeleton-webpack-plugin

  npm install vue-server-renderer

2、在src/components文件夾下新建一個 skeleton 文件夾,skeleton文件下新建

  skeleton-entry.js (入口配置文件)

  

 

 

   Skeleton.vue (骨架結構文件)樣式隨你寫,不再多說

  

 

3、根目錄新建webpack配置文件 vue.config.js

 1 const SkeletonWebpackPlugin = require('vue-skeleton-webpack-plugin');
 2 const path = require('path')
 3 module.exports = {
 4     publicPath:'./',
 5  
 6     chainWebpack: config => {
 7         // 其他配置
 8         config.entry('main').add('babel-polyfill') // main是入口js文件
 9         // 其他配置
10     },
11      css: {
12          extract: true, // css拆分ExtractTextPlugin插件,默認true - 骨架屏需要為true
13      },
14     lintOnSave: false,
15     configureWebpack: (config) => {
16         // vue骨架屏插件配置
17         config.plugins.push(new SkeletonWebpackPlugin({
18             webpackConfig: {
19                 entry: {
20                     app: path.join(__dirname, './src/components/skeleton/skeleton-entry.js'),
21                 },
22             },
23             minimize: true,
24             quiet: true,
25             router:{
26                 mode:'hash',
27                 routes:[
28                     { path: '/', skeletonId: 'skeleton' }
29                     // { path: 'aboute', skeletonId: 'skeleton1' },如果需要配置多個,直接在routes下新增路由對象即可
30                 ]
31             }
32         }))
33     },
34 };

完整項目結構:

 

 

OK,骨架屏完成

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM