给项目加一个骨架屏吧

骨架屏能够理解为是当数据还未加载进来前,页面的一个空白版本,一个简单的关键渲染路径。用户会看到一个样式简单,描绘了当前页面的大体框架的骨架屏页面,而后骨架屏中各个占位部分被实际资源彻底替换,这个过程当中用户会以为内容正在逐渐加载即将呈现,下降了用户的焦躁情绪,使得加载过程主观上变得流畅。css

安装

这里采用饿了么开源的方案page-skeleton-webpack-plugin。html

npm install --save-dev page-skeleton-webpack-plugin
npm install --save-dev html-webpack-plugin
复制代码

安装过程当中报错提示以下vue

ERROR: Failed to download Chromium r515411! Set "PUPPETEER_SKIP_CHROMIUM_DOWNLOA D" env variable to skip download.
复制代码

执行这个命令webpack

npm config set puppeteer_download_host=https://storage.googleapis.com.cnpmjs.org
复制代码

使用

我这个项目是基于vue-cli3脚手架开发的。git

第一步配置插件

建立一个vue.config.js文件。github

const { SkeletonPlugin } = require('page-skeleton-webpack-plugin')
const path = require('path')

module.exports = {
  configureWebpack: {
    plugins: [
      new SkeletonPlugin({
        pathname: path.resolve(__dirname, './shell'), // 用来存储 shell 文件的地址
        staticDir: path.resolve(__dirname, './dist'), // 最好和 `output.path` 相同
        routes: ['/'], // 将须要生成骨架屏的路由添加到数组中
        excludes: ['.van-nav-bar', '.van-tabbar']  // 须要忽略的css选择器
      })
    ],
  },
  chainWebpack: (config) => {   // 解决vue-cli3脚手架建立的项目压缩html 干掉<!-- shell -->致使骨架屏不生效
    if (process.env.NODE_ENV !== 'development') {
      config.plugin('html').tap(opts => {
        opts[0].minify.removeComments = false
        return opts
      })
    }
    
  },
};
复制代码

在项目根目录下面建立一个shell文件夹。 chainWebpack配置 这个是解决vue-cli3打包的骨架屏不生效的BUGweb

第二步修改 HTML Webpack Plugin 插件的模板

在你启动 App 的根元素内部添加 vue-cli

<body>
  <div id="app"><!-- shell --></div>
  <!-- built files will be auto injected -->
</body>
复制代码

第三步:界面操做生成、写入骨架页面

  • 在开发页面中经过 Ctrl|Cmd + enter 呼出插件交互界面,或者在在浏览器的 JavaScript 控制台内输入toggleBar 呼出交互界面。 shell

  • 点击交互界面中的按钮,进行骨架页面的预览,这一过程可能会花费 20s 左右时间,当插件准备好骨架页面后,会自动经过浏览器打开预览页面npm

  • 扫描预览页面中的二维码,可在手机端预览骨架页面,能够在预览页面直接编辑源码,经过点击右上角写入按钮,将骨架页面写入到 shell 文件夹中。

  • 经过 webpack 从新打包应用,当页面从新启动后,就可以在获取到数据前看到应用的骨架结构了。

最终效果

demo 地址

vbook.langpz.com

个人博客和GitHub地址

github.com/lanpangzhi

blog.langpz.com

参考

github.com/cnpm/cnpmjs… github.com/ElemeFE/pag…

相关文章
相关标签/搜索