【发布时间】:2020-09-23 12:04:59
【问题描述】:
我有一个在后端使用 Strapi 的 React 项目。我想创建一个完全离线工作的项目的静态版本。离线版本将仅具有只读功能,例如查看文章。完全离线我的意思是我应该能够将相关的 HTML/CSS/JS 等文件放在一个文件夹中,将其发送给某人,他们应该能够点击 index.html 并开始使用该应用程序。
我正在考虑研究盖茨比,但我想知道我所描述的是否可能?
【问题讨论】:
我有一个在后端使用 Strapi 的 React 项目。我想创建一个完全离线工作的项目的静态版本。离线版本将仅具有只读功能,例如查看文章。完全离线我的意思是我应该能够将相关的 HTML/CSS/JS 等文件放在一个文件夹中,将其发送给某人,他们应该能够点击 index.html 并开始使用该应用程序。
我正在考虑研究盖茨比,但我想知道我所描述的是否可能?
【问题讨论】:
检查 React 的构建过程。
您可以轻松地完全离线运行构建的应用程序,但您必须考虑到任何 API 请求都不起作用(除非您也在本地运行 Strapi 服务器)。在这一点上,我应该补充一点,你可以在本地运行你的应用程序,如果你有互联网连接,所有请求都应该正常工作。
【讨论】:
确实可以,有一个plugin to do it (gatsby-plugin-offline),但您可以手动获得相同的结果。
棘手的部分在于避免 API 请求,因为它们不起作用。拥有像 Strapi 或其他的 CMS 并没有什么不同,因为 Gatsby 在构建时获取数据,无论来源如何。
前面提到的插件使用Workbox Build 添加了插入式支持,并在您的gatsby-config.js 添加预缓存页面以使其无需连接即可使用:
plugins: [
{
resolve: `gatsby-plugin-offline`,
options: {
precachePages: [`/about-us/`, `/projects/*`],
},
},
]
您可以根据需要通过添加或插入不同的文件来自定义插件。
【讨论】: