如何在 PWA 应用中使用 localhost 进行测试?

阅读时长 4 分钟读完

什么是 PWA 应用?

PWA(Progressive Web App)是一种新型的 Web 应用程序,它可以像原生应用程序一样运行在用户的设备上,同时具有 Web 应用程序的优点,例如跨平台、无需下载安装、可更新性等。PWA 应用可以通过 Web 技术实现离线缓存、推送通知、添加到主屏幕等功能,使得用户可以在离线情况下访问应用程序,并且具有更好的用户体验。

在开发 PWA 应用时,我们通常需要在本地进行测试。在传统的 Web 应用中,我们可以通过 localhost 来访问本地的 Web 服务器进行测试。但是,在 PWA 应用中,我们需要使用 HTTPS 协议来进行访问,否则浏览器会提示安全警告。那么,如何在 PWA 应用中使用 localhost 进行测试呢?

1. 使用自签名证书

我们可以使用自签名证书来模拟 HTTPS 环境。自签名证书是由我们自己生成的证书,由于不受任何权威机构的信任,因此在浏览器中会提示安全警告。不过,我们可以在开发环境中使用自签名证书来进行测试。

生成自签名证书

我们可以使用 OpenSSL 工具来生成自签名证书。在命令行中执行以下命令:

这个命令会生成一个名为 localhost.key 的私钥文件和一个名为 localhost.crt 的证书文件。

配置本地 Web 服务器

我们需要将生成的私钥文件和证书文件配置到本地 Web 服务器中。以 Node.js 的 http-server 为例,我们可以在启动 Web 服务器时指定证书文件和私钥文件:

这个命令会启动一个 HTTPS 服务器,可以在 https://localhost:8080 地址访问。

在 PWA 应用中使用 localhost 进行测试

在 PWA 应用中,我们需要在 service worker 中注册一个 fetch 事件,用于处理网络请求。我们可以在 fetch 事件中使用 fetch API 发送网络请求,这时浏览器会发现我们使用的是自签名证书,会提示安全警告。我们可以通过在 fetch 调用中添加 {mode: 'no-cors'} 选项来绕过安全检查:

这样,在 PWA 应用中使用 localhost 进行测试就可以了。

2. 使用 ngrok 工具

ngrok 是一个免费的反向代理工具,可以将本地的 Web 服务器暴露到公网上,从而可以通过 HTTPS 协议进行访问。使用 ngrok 可以避免使用自签名证书的麻烦,同时还可以在多个设备上进行测试。

安装 ngrok

我们可以在 ngrok 的官网 https://ngrok.com/ 上下载 ngrok 的安装包,解压后将 ngrok 可执行文件添加到系统的 PATH 中,即可在命令行中使用 ngrok 命令。

启动 ngrok

在命令行中执行以下命令启动 ngrok:

这个命令会将本地的 8080 端口暴露到公网上,并生成一个随机的 HTTPS 地址,可以通过这个地址访问本地的 Web 服务器。

在 PWA 应用中使用 ngrok 进行测试

在 PWA 应用中,我们需要在 service worker 中注册一个 fetch 事件,用于处理网络请求。我们可以在 fetch 事件中使用 fetch API 发送网络请求,这时浏览器会发现我们使用的是 ngrok 生成的 HTTPS 地址,可以正常访问。

这样,在 PWA 应用中使用 ngrok 进行测试就可以了。

总结

在开发 PWA 应用时,我们需要在本地进行测试。可以使用自签名证书或者 ngrok 工具来模拟 HTTPS 环境,从而可以在 PWA 应用中使用 localhost 进行测试。这样可以避免在公网上部署测试服务器的麻烦,同时还可以在多个设备上进行测试。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65c70db6add4f0e0ff139274

纠错
反馈