给项目加一个骨架屏吧

本文介绍如何使用page-skeleton-webpack-plugin实现骨架屏加载效果,降低用户等待焦虑,提升用户体验。通过详细步骤指导,包括安装配置、界面操作及最终效果展示。

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

安装

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

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

安装过程中报错提示如下

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

执行这个命令

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

使用

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

第一步配置插件

创建一个vue.config.js文件。

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打包的骨架屏不生效的BUG

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

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

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

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

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

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

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

  • 通过 webpack 重新打包应用,当页面重新启动后,就能够在获取到数据前看到应用的骨架结构了。

最终效果

demo 地址

vbook.langpz.com

我的博客和GitHub地址

github.com/lanpangzhi

blog.langpz.com

参考

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

转载于:https://juejin.im/post/5d01e84451882565b4602840

我现在有一个项目,前端使用vite+vue3+vue-router+pinia+element-plus+axios开发,现在需要你帮忙生成几个页面。 首先第一个页面是一个项目的介绍页,要好看点,且能突出主题。我们是一个用户填报简历就可以和我们的岗位库进行对比然后生成分析的网站。首页要大气点,而且要突出主题,网站主题叫《职景Vision》,slogan为:一个为求职者提供岗位推荐及前景分析的可视化智能平台,拥有30W+岗位数据,只需几秒即可查看岗位前景。同时在该页面下部要一个按钮,按钮文字为“立马开始”,点击就可以进入第二个页面。 第二个页面应该有一个进度条,在最顶端。进来后进度条为:填写您的简历。后面是“生成分析中”,最后是“分析报告“,进度条应该是这三部分。进入该页面直接是一个填报表单,让用户填报简历信息,具体字段参考建表语句。 表单应包含如下字段、岗位(下拉单选框,备选项你可以自己先定义几个)、城市(文本框)、学历(文本框)、技能专长(文本域控件)、工作经历(文本域)、项目经历(文本域)、工作经验(文本框)、期望薪资(下拉单选,备选项你根据经验先设置几个) CREATE TABLE resumes ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT, full_name VARCHAR(100), contact VARCHAR(50), education TEXT, work_experience TEXT, skills TEXT, projects TEXT, file_path VARCHAR(255), embedding BLOB, created_at TIMESTAMP ); 点击填报完成按钮,进度条就会走向第二个生成分析中,此页面要一个载动画,最后载完毕后再跳转到分析报告页面。
03-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值