自己有一个日记项目,由于服务器带宽很小1MB,在加载之前页面中显示是空白的,就想给它加个前置的动画,这个用户体验更好。
如果你是 pwa 应用, vue3 默认都已经是 pwa 应用,就需要在 vue.config.js
的 pwa 字段中确保 pwa.manifestOptions.start_url
是 index.html
。
比如我的配置如下
/**
* PWA 设置
*/
pwa: {
name: '日记', // 名字
themeColor: "#373737", // 背景颜色
appleMobileWebAppCapable: true, // 苹果 WebApp 支持
// manifest 设置
manifestOptions: {
name: '标题日记',
short_name: "日记",
theme_color: "#373737",
start_url: "./index.html",
display: "standalone",
background_color: "#373737",
icons: [
{
src: "logo.svg",
sizes: "512x512",
type: "image/svg+xml",
purpose: "any",
},
{
src: "appicon-apple.png",
sizes: "512x512",
type: "image/png",
purpose: "any",
},
],
}
}
这里看个人发挥了,就是把需要展示的放到 index.html
中即可,放到 id="app"
的 div
之外。
比如我的是
<link rel="stylesheet" href="preloading.css">
<view class="preloading">
<view class="logo-preloading">
<img src="logo.svg" alt="LOGO">
view>
<view class="preloading-title">载入中view>
<div class="loading">
<div class="loading-1 loading-item">div>
<div class="loading-2 loading-item">div>
<div class="loading-3 loading-item">div>
div>
view>
<div id="app">div>
这样在项目还没有加载完成之前就能显示这个 .preloading
内的内容了
这个简单,只需要在 app.vue
的 created
或 mounted
方法中隐藏这个东西即可
app.vue
created() {
// 日记项目载入后,隐藏 preloading
document.querySelector('.preloading').style.display = 'none'
},
可以从我的这个开源项目中查看源代码:
https://github.com/KyleBing/diary