在移动应用的开发中,渐进式 Web 应用程序( PWA)已经成为具有可靠且快速的性能,并具有用户令人愉悦的设计的标准选择。但是,安卓平台上的白屏问题,一直是开发人员最常面临的挑战之一。
在本文中,我将详细介绍如何使用一些简单但有效的技巧来解决浏览器加载 PWA 时可能遇到的起始白屏问题。
什么是 PWA?
渐进式 Web 应用程序(PWA)是一种 Web 应用程序的新类型。它们与普通的 Web 应用程序不同之处在于,它们能够在离线状态下缓存和持久存储数据,从而实现高度增强的性能,具有与原生应用程序相似的用户体验。PWA 还有许多其他特性,包括可添加到主屏幕、响应式设计等。
为什么会出现白屏问题?
PWA 开发的目标之一是尽可能减少加载时间,使应用程序尽可能快地渲染。但是,由于硬件和浏览器的限制,以及其他可能导致缓慢加载的因素,PWA 应用程序也可能遇到起始白屏问题。
白屏问题的原因是因为在应用程序启动后,浏览器需要下载并缓存所有必要的 JavaScript 和其他资源,然后构建和渲染 DOM。在这个过程中,用户可能会看到空白屏幕。
在某些情况下,特别是在弱网络连接或较低的硬件设备上,这个过程可能需要更长的时间,这就是为什么 PWA 开发人员在应用程序中使用交互式加载状态指示符以减少起始白屏问题所产生的影响。
解决方案
下面是一些有效的技巧,可在 PWA 开发中减少白屏问题。
1.懒加载
懒加载是因特网上常用的一种技术,它确保仅在需要时加载资源。PWA 开发人员可以将这种技术应用于他们的应用程序上,以使他们只下载必要的 JavaScript 脚本和其他资源,从而减少加载时间。
举个例子,在您的 PWA 应用中,您可以使用 JavaScript 调用“import()”函数。这个函数可以在浏览器必须下载和执行某个文件时,只下载必要的代码,而不是下载整个文件。
const myData = () => import('/path/to/your/data');
2. 缓存管理
通过使用一些流行的缓存管理库,例如 Service Workers 和 Workbox,您可以缓存必要的所有资源以便于离线访问。在浏览器离线或离线时,这些缓存库可以快速呈现应用程序。这会快速显示 PWA 应用程序并减少起始白屏问题的体验。
importScripts('https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js'); workbox.routing.registerRoute( /https:\/\/jsonplaceholder\.typicode\.com\/todos\/1/, workbox.strategies.cacheFirst({ cacheName: 'json-cache' }) );
3. 渐进数据加载
逐渐加载数据是指在页面上加载和呈现数据时渐进地显示数据。这是 PWA 开发中一个很好的技巧,帮助减少起始白屏问题,以及确保用户可以看到正在加载的数据。
-- -------------------- ---- ------- ----------- - ----------------- -------- ------ ----------- ----------- --------- --------- -------- ----- ------ ----- ------- ------ ---------------- ------- ------------ ------- -------------- ---- - ------------------ - -------- --- ----------------- ------------------ ------ ----------- -- ------- ---- ------- ---- ------- ---- ----------- ------ --------- --------- ------- -- ----- -- ------ ----- ------- ---- -
-- -------------------- ---- ------- --- ------------ - - ------- ----- -- --- ----- - ----------------------------------------------- --- -------- - ----- ------------ ------------- ---------------- -- ---------------- -------------- -- - ------------------------ --- --- ------ - ---------------------------------------- --- -------- - - -------------------------- -- ---------------- - ---------
4. Skeleton Screens
Skeleton screens (骨架屏),又称为占位符加载屏幕,是一种视觉反馈技术,可以在应用程序加载过程中展示占位符表示加载信息,以免用户看到白屏。它以预期的结果为基础,缩短了用户等待效果。
<div id="skeleton-container"> <div id="skeleton-elements" hidden> <div class="skeleton-rect"></div> <div class="skeleton-rect"></div> <div class="skeleton-rect"></div> </div> <div id="actual-data">Data is loading</div> </div>
.skeleton-rect { background-color: #f6f8fa; height: 18px; width: 100%; border-radius: 10px; margin-bottom: 16px; }
-- -------------------- ---- ------- ------ -- -- - ----- ------------ - - ------- ----- -- ----- ----- - ----------------------------------------------- ----- -------- - ----- ------------ ------------- --------- -- ----------- ---------- -- - ----- ------ - --------------------------------------- ----- ---------- - --------------------------------------------- ---------------- - ----------- ----------------- - ----- -- ------------ -- - -------------------- ----------- --- -----
结论
在本文中,我们提供了一些简单但有效的解决方案,以帮助 PWA 开发人员解决早期白屏问题。无论您选择哪种方法,都应将最终用户体验放在首位。始终将用户体验和易于使用性放在最重要的位置,这将有助于确保用户能够在 PWA 应用程序上获得最好的体验。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/672f792eeedcc8a97c8eb2ee