【问题标题】:How to export react app to pure static html如何将反应应用程序导出为纯静态 html
【发布时间】:2020-03-20 08:19:42
【问题描述】:

如题,我有一个reactJS写的登陆页面,很小,想导出为纯静态html。我已经研究过,没有找到任何解决方案。

【问题讨论】:

标签: html reactjs


【解决方案1】:

我使用webpack 生成静态html和javascript文件。

here 是一个很好的入门指南

【讨论】:

  • 感谢您的解决方案,但需要部署到主机,我只需要一个文件 index.html 和更多静态文件即可在我的本地运行
  • 你用什么来搭建你的应用程序?
  • webpack 会创建你所有的静态文件,包括索引文件
【解决方案2】:

下面的代码将为您提供 dist 文件夹中的静态文件。

   const path = require('path');

   module.exports = {
      entry: './src/index.js',
      output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'bundle.js'
      }
    };

如果你有快速服务器,你可以使用下面的代码将静态文件发送到浏览器:

app.use('/dist', express.static(path.join(__dirname, 'dist')));

// Here put all your API route.

router.get('*', (req, res) => {
    const route = path.join(__dirname, '..', 'dist', 'index.html');
    res.sendFile(route);
});

【讨论】:

  • 谢谢,但我更喜欢通过打开的 index.html 文件运行而不是创建和节点服务器
【解决方案3】:

您需要使用以下工具预渲染它们 https://www.npmjs.com/package/react-snapshot 要么 https://github.com/stereobooster/react-snap

这实际上是您当前构建的快照,但可以作为可以从任何浏览器甚至离线运行的纯 html/css/js。也有更高级的框架,比如 Gatsby,但这 2 应该足以解决更简单的问题。

【讨论】:

  • 有用的链接,谢谢.. 我会说删除 NPM repo react-snapshot 链接(编辑:..或更改为它的 GH 链接?),因为它是README.md on GitHub 说它已被弃用,推荐 react-snap 无论如何。 (:
【解决方案4】:

将 react 应用程序转换为完整的静态 HTML 是不可能的,因为“动态呈现”是整个 react 正在运行的。虽然如果您想要等效的 html,您可以通过检查从浏览器中获取,但这不是 100% 可靠的解决方案。

即使您有一个简单的 React 应用程序,例如。简单的 hello world,您可以在运行时通过检查获得等效的 HTML 和 css,但如果有人使用过路由器或状态等,则无法将其转换为 STATIC HTML 并轻松保留其所有工作。

您提到的一点是您希望它仅通过运行 index.html 来运行,这是可能的,但这也不是静态 html。

运行 npm build 或 yarn build ,这将生成一个 build 目录,其中你有静态文件夹 index.html,所有你的 css , js 文件,所有压缩,准备部署。现在你可以简单地运行 index.html,所有的 css,js 已经链接在那个 HTML 文件中,这个构建只是你的 react 应用程序的普通版本,它将直接在浏览器中运行,只需运行 index.html,不需要节点环境!

所以,你的第二部分解决了你有index.html,你可以直接在浏览器中运行它。

如果你想要单个 HTML 文件,你可以在构建后手动将所有 CSS 和 js 分别移动到 index.html 中的 style 和 script 标签。

【讨论】:

  • 在构建的 react 应用的浏览器中运行 index.html 将不起作用。
【解决方案5】:

这是我的尝试。从docs 我们可以看到homepagepackage.json 条目有所不同,包括部署在我有written 的GitHub 页面上。

  1. StandardCRA 应用程序
  2. "homepage": "." 编辑package.json
  3. 运行npm/yarn build
  4. 在 Linux 上 xdg-open build/index.html

您的应用应该正在运行。如果问题是询问是否将其嵌入到您的自定义 HTML 文件中,则使用 iframe 或将 index.html 文件中的内容与 React 的引用元素链接以在此处呈现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-30
    • 2018-08-24
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 2020-10-18
    • 2019-02-25
    • 2018-03-27
    相关资源
    最近更新 更多