vue cli3 之 skeleton plugin

前言


前人栽树后人乘凉,骨架屏到现在已经非常多的解决方案,用之即可 ···

方式


  • 安装插件vue-skeleton-webpack-plugin
  • vue.config.js配置
const path = require('path')
const SkeletonWebpackPlugin = require('vue-skeleton-webpack-plugin');
module.exports = {
  css: {
    // css拆分ExtractTextPlugin插件,默认true - 骨架屏需要为true
    extract: true,
  },
  configureWebpack: (config)=>{
    // vue骨架屏插件配置
    config.plugins.push(new SkeletonWebpackPlugin({
      webpackConfig: {
        entry: {
          app: path.join(__dirname, './src/config/skeleton.js'),
        },
      },
      minimize: true,
      quiet: true,
    }))
  },
}
  • 新增一个骨架屏注入js文件,这里命名为skeleton.js,放置在config文件夹下
import Vue from 'vue';
import Skeleton from '../static/skeleton/skeleton-2';

export default new Vue({
  components: {
    Skeleton,
  },
  render: h => h(Skeleton),
});
  • 骨架屏的vue文件,skeleton-2.vue 文件,文件引用,感谢作者分享



  • 骨架屏的vue文件,skeleton-1.vue 文件,文件引用,感谢另一位作者分享



  • 为了加载效果更佳,避免浏览器加载css阻塞,在main.js新增如下配置
const app = new Vue({
  store,
  router,
  render: h => h(App)
})

// 如果 JS 晚于 CSS 加载完成,那直接执行渲染
if (process.env.NODE_ENV === 'production') {
  if (window.STYLE_READY) {
    app.$mount('#app')
  }
} else {
  app.$mount('#app')
}


备注


到此骨架屏就完成了,这仅仅是固定样式的骨架屏,有时间再研究运行时渲染方案
附:移动端和pc端项目结构

malk 2018-12-6

你可能感兴趣的:(vue cli3 之 skeleton plugin)