【问题标题】:What is the difference between NextJs and Create React AppNextJs 和 Create React App 有什么区别
【发布时间】:2020-11-08 02:03:14
【问题描述】:

我正在尝试找出NextJsCreate React App 之间的区别。我知道在使用ReactJs 开发我们的前端应用程序时,两者都是为了让我们的生活更轻松。

在谷歌上浏览了一些文章后,我发现主要的区别是

NextJs 在 Create React App 时提供服务器端渲染 (SSR) 提供客户端渲染 (CSR) 和 SSR 提高性能 应用程序加载。

但是从开发的角度来看其他参数呢

使用 NextJS 或 CRA 开发的 Web App 的可维护性和可扩展性?

Typescript 和 React Hooks/Redux 支持

或者,如果我的比较有误,您甚至可以指导我?

【问题讨论】:

    标签: reactjs typescript redux next.js create-react-app


    【解决方案1】:

    我使用过 NextJs 和 CRA。这两个框架都可用于快速入门并提供良好的开发人员体验。但是,这两个都有用例,其中任何一个都更好。我将尝试根据其中一些因素对它们进行比较。随意建议使用附加点或 cmets 进行编辑

    服务器端渲染

    CRA Next.js
    CRA doesn't support SSR out of the box.
    However, you can still configure it.
    It just takes more effort to setup SSR with your preferred server and configuration. The development team doesn't have plans to support this in the near future. They suggest other tools for this use case.
    NextJs has different types for SSR. It supports SSR out of the box.
    * Static generation: fetch data at build time. This works best for use cases like blogs or static websites
    * Server side rendering: fetch data and render for each requests. You have to do this when you need to serve different view for different users.

    可配置性

    我认为这是这些工具非常不同的地方,您的决定可能取决于这个因素

    CRA Next.js
    Create React App doesn't leave you a lot of room to configure it.
    Configurations like webpack config cannot be changed unless
    you stray away from normal CRA way (eject, rescripts, rewired, craco).
    Basically, you have to use what's configured in
    react-scripts which is the core of CRA.
    Almost everything is configurable.
    If you check the example NextJs templates, you can see files like
    babelrc, jest.config, eslintrc etc
    that you can configure.

    可维护性

    CRA Next.js
    CRA is very opinionated.
    If you keep updated with the releases of CRA, it's not hard to maintain.
    NextJs is also well maintained. They release regular updates.

    打字稿

    CRA Next.js
    Supports out of the box. You can initialize CRA app with typescript with
    npx create-react-app my-app --template typescript
    Supports typescript out of the box.
    Start with configurations for typescript with touch tsconfig.json

    挂钩支持

    CRA 和 NextJs 的最新版本都安装了支持钩子的 React 版本。您还可以轻松升级到最新版本


    Redux 支持

    Redux 是一个可以与这两种工具一起使用的库。

    【讨论】:

    • 当然。 React 是一个库。但这与你的问题无关。创建 React 应用程序不是 React。当我阅读这个问题时,我觉得你很清楚这种区别。我回答了 Create React App 和 Nextjs 有什么不同或者这两个框架有什么特点。
    • 能否请您添加一些关于可扩展性的内容?
    • 能否请您定义可扩展性?只是为了确保我明白你在说什么。我看到另一个答案。也许您可以添加该答案未涵盖可扩展性的哪些方面。
    • create-react-app 是一个框架。不过,它的用例与其他流行的前端框架不同。主要用例是原型设计和学习反应。 CRA 中没有其他框架提供的功能。仍然是一个框架。
    • 您所写的内容并非 100% 真实。我不喜欢这两个,但是 CRA 提供了一种很好的扩展配置的方法,您可以添加 babel 或 typescript 或 webpack 配置文件而无需弹出。所以,“创建 React App 并没有给你留下太多的配置空间。”不太正确。
    【解决方案2】:

    TLDR

    最大的不同是两个项目的目的。 NextJS : JAM StackStatic Site Generator Create React App :是一种官方支持的创建单页 React 应用程序的方式。

    解释:

    对于许多开源项目来说,这个难题都是正确的。似乎是其他的替代品,但它们有关键的区别。例如在这种情况下虽然两个项目都使用 ReactJS 作为前端并生成 webapps。他们解决的问题非常不同。 js中有一些重叠的功能主题/模板。 但开发和未来的工作将是增强项目,以便它有助​​于以更好的方式解决问题陈述。

    即如果有任何新的 Markdown 功能开发,NextJS 将尝试包含。在 CreateReactApps 中不会出现这种情况。

    建议。

    从您的问题看来,您正在寻找这些项目来开发 React Native 应用程序。所以我建议使用 Create React App。

    您的比较应该主要是这个项目是否与我正在解决的问题一致。 然后比较。 可维护性、可扩展性、Typescript 和 React Hooks/Redux 支持。

    如果需要更多信息,请发表评论。

    【讨论】:

    • 谢谢,我主要关心的是 SPA。你的回答清楚了!
    【解决方案3】:

    Create React App 只是一个 React 项目创建引擎,可帮助您快速设置您的 React 项目。运行 CRA 脚本 npx create-react-app <appname> 后,您将获得一个可以运行的漂亮且干净的单页应用程序。在后台你还可以得到 babel、eslint、jest、webpack 等已经设置好的东西,所以这是开始进行 React 开发的一种非常方便的方式。如果您需要对这些工具的配置进行更多控制,您仍然可以使用npm run eject

    Next.js 另一方面是基于 React 构建 Node.js 服务器端应用程序的框架。这意味着您将使用相同的面向组件的逻辑来构建页面并利用 Next.js 路由引擎进行页面导航。服务器端渲染将允许加载时间随着时间的推移更加分散,因此感知性能可能会更好。 Redux 也可以使用,但需要一些额外的步骤才能使其正常工作(请参阅https://github.com/kirill-konshin/next-redux-wrapper

    无论你选择什么,最终都会是 React 编码ComponentsJSXTypeScript 支持React 钩子,以及 React 的所有其他核心方面都将得到支持.因此,您可以期待类似程度的可维护性。另一方面,可扩展性取决于您的选择:如果您选择 Next.js,您将在服务器基础设施上托管应用程序,该基础设施的大小应根据您的受众而定,而使用 CRA 创建的 React 包只需要静态托管在某个地方。

    【讨论】:

      【解决方案4】:

      React 只是一个 JavaScript 库,另一方面,Nextjs 是一个 React 框架。 SSR 是 Nextjs 的好处之一,但还有很多其他好处。 Nextjs 可以做所有 react 能做的事情,而且最重要的是,它具有 react 单独没有的功能。在此处查看 nextjs 的文档:https://nextjs.org/docs/getting-started

      【讨论】:

        猜你喜欢
        • 2020-10-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-03
        • 1970-01-01
        • 2018-01-28
        • 1970-01-01
        • 2010-11-16
        • 2017-07-25
        相关资源
        最近更新 更多