【问题标题】:What is the difference between `next export` and just using React?`next export` 和只使用 React 有什么区别?
【发布时间】:2021-10-25 08:28:50
【问题描述】:

所以我从here 中得到了next build && next exportnext build && next start 之间的区别。

简而言之,next build && next export 生成一个完全静态的应用程序,它不需要服务器来托管,而 next build && next start 则启动一个呈现和提供内容的服务器。

那么我的问题是,next build && next export 与仅使用 React 有何不同?似乎这两种方法都会生成静态文件(html、css、js)。如果我想优化 SEO,next export 比使用 react 更好吗?

【问题讨论】:

    标签: reactjs next.js seo single-page-application


    【解决方案1】:

    有很多方法可以创建 React Web 应用程序。它们的种类也很多。

    客户端渲染

    引人注目的工具链:创建 React 应用程序

    一切都在客户端完成。您向浏览器发送一个空白 HTML 文件和各种 JS 包。浏览器解析捆绑包并在 HTML 上呈现内容并将其呈现给用户。

    设置起来更省力,因此最适合小型项目。

    这正是您所说的:“仅使用 React”。

    服务器端渲染

    引人注目的工具链:Next.js

    大部分工作都是在服务器端完成的。当用户请求查看页面时,服务器会动态生成所需的 HTML 文件,其中包含静态内容。然后,它将文件与 JS 捆绑包一起发送给用户以获取交互式内容。然后浏览器将这些 JS 附加到 HTML 并呈现给用户。

    与 Create React App 相比,它需要更多的设置工作。它最适合大中型项目。

    静态站点生成器(预渲染) 引人注目的工具链:Gatsby

    类似于 Next.js,但不是动态生成 HTML。它在构建时生成所有这些,并在请求时将其发送给用户。

    此属性的整体性能最佳。但是当网站变得越来越大并且拥有数百个页面时,它可能会成为一场噩梦。构建一个大型静态 Gatsby 网站需要很长时间才能完成。

    附言Next.js 也能够生成静态网站,但您为什么不选择合适的工具,首先为生成静态网站而设计和优化?

    【讨论】:

    • 感谢您的回答。我刚刚了解到,react 实际上会向浏览器发送一个空的 HTML 以及一大堆脚本,而下一次导出发送的 HTML 中已经包含了内容。这解决了我的问题。谢谢!
    • 更正:不是React,而是create-react-app 做事的方式。 React 本身有用于服务器端渲染的 API,事实上 create-react-app 决定不使用它而 next 使用它。
    【解决方案2】:

    Next.js 可用作静态侧构建器(在您引用的情况下),这意味着它将在构建时生成所有的 html,并提供一些性能特性。

    React(如果未在服务器上使用)将始终只有 1 个 HTML 页面,然后在客户端请求时加载您的所有应用程序(或块,如果您是代码拆分)。

    如果您对该概念不熟悉,请阅读静态侧构建的更多信息。

    出于 SEO 目的,使用带有静态或服务器端渲染的 Next.js 将是最好的方法,因为所有内容都是预先构建的,并且机器人可以轻松访问(尽管 Google bot 也应该已经读取 javascript 应用程序)。

    【讨论】:

    • 那么如果我的下一个应用只有一个页面,会不会和使用 react 一样(在静态侧边构建的情况下)?
    【解决方案3】:

    尝试以下方法后回答我自己的问题:

    • 启动一个 create-next-app 然后执行next build && next export
    • 启动一个 create-react-app 然后执行yarn build
    • 比较下一个应用中的 out/index.html 和反应应用中的 build/index.html

    我发现out/index.html 实际上包含所有静态内容,而build/index.html 在其<body> 中只包含<script> 元素。当在浏览器中打开时,包括段落(<p> 元素)在内的所有内容稍后都会生成(或水合)。

    所以总而言之,尽管 Next 和 React 都可以用来生成静态站点 (SSG),但 Next 仍然更适合 SEO,因为内容已经在 html 文件中。

    【讨论】:

      猜你喜欢
      • 2020-08-26
      • 2020-02-08
      • 2023-01-09
      • 2013-12-02
      • 2013-02-07
      • 2016-06-20
      • 2012-08-02
      • 2019-07-30
      • 2017-11-24
      相关资源
      最近更新 更多