【问题标题】:Why use create-react-app when I can just use react in the browser?当我只能在浏览器中使用 react 时,为什么还要使用 create-react-app?
【发布时间】:2018-01-24 20:26:34
【问题描述】:

我想使用 react/redux。所以我在 5 分钟后做了“create-react-app test”,我得到了一个包含 22,538 个文件的目录,占用了 131MB。

同时,如果我用谷歌搜索“jsfiddle react redux”并查看第一个链接,我会得到一个 jsfiddle,它只加载了几个文件,全部在浏览器中。

那么我为什么要使用 create-react-app 而不是在浏览器中加载一些依赖项呢?开销值得吗?主要是因为webpack吗?

【问题讨论】:

  • 大部分是Webpack - 因为它提供了commonjs模块系统以更好地组织代码结构;随着应用程序可能变得更大,您可能希望利用其他功能 - 代码拆分、通过 less 或 sass 预处理 css 等。
  • 你打算部署一个使用 React 的应用程序吗?还是您只是在学习和构建不会部署给其他人使用的小示例?

标签: reactjs webpack redux create-react-app


【解决方案1】:

我使用 create react app(从现在开始为 CRA),因为 react redux 有太多样板文件无法管理。

CRA 基本上是一个启动工具包:这解释了为什么在导入方面有如此多的基本包资产。

我可以向你保证,也许你会为在大型项目(以及依赖项......和打包!!!)上使用 redux 付出代价。

无论如何,主要取决于团队,如果您需要标准化如何操作事物并且您的团队很大,那么 Redux 应该很有用,因为这种行为方式避免了意外的实现,因为“有办法”做事。

【讨论】:

    【解决方案2】:

    我个人的偏好是不使用CRA。它旨在成为想要学习 react 而不会浪费时间配置和设置环境的开发人员的入门工具包。

    如果您从头开始,这是一个很棒的学习工具,因为所有的魔法都隐藏在您的视野之外,您只需专注于 React 并让 cra 处理细节。但是生产项目并不是那么容易处理的。可能会有很多要求,而您的cra 可能不支持它。因为它旨在成为学习反应的通用工具。你可以弹出它,但你应该避免弹出它,因为配置非常复杂。

    cra 您缺少项目的一个非常重要的基础。即webpack

    cra 解决此问题的方式是默认隐藏所有配置,因此在启动项目后,您不会暴露于 Babel、Webpack、dev/prod 环境或任何其他配置。

    您从一个可以为您做所有事情的工具开始学习,但是当您准备好了解在这一切下事情的真正运作方式时,您应该怎么做? 使用cra,您有一个弹出脚本,可以发现隐藏在下面的所有配置。 如果你觉得这样做很冒险,你会发现自己进入了一个非常庞大而可怕的配置,意味着要做很多事情并且设计成不暴露给最终用户。

    如果您是资深开发者,那么您必须真正尝试根据您的项目要求配置自己的webpack 配置。 webpack、babel 等非常重要,因为它们不仅适用于 react。您可以在任何现代 javascript 项目中使用它们。作为一名高级开发人员,您应该真正知道事情是如何工作的,如果您决定删除一个库并添加另一个库,您应该知道在哪里以及如何做。并且真的不应该依赖于让事情变得简单的工具。

    所有这些都不是一个硬性规则。但我个人的经验。

    【讨论】:

    • 感谢您的回答。在使用 react+webpack 之后如实说。我正在考虑使用其他库。我发现整个事情不必要地复杂。我想要像 vue.js 这样的东西,你只需在 html 中添加一行,而不是处理整个构建系统。
    • @foreyez 确实,整个构建系统似乎毫无意义。但我们必须欣赏这些工具和框架如何让我们的生活更轻松。比如webpack-dev-serverhmr 以及整个babel 变换。
    • 我个人认为这让我的生活变得更加艰难。运动部件太多。我也不认为应该编译脚本语言 javascript。它可能对一个单一的程序有好处,比如 facebook。但如果你是一个制作很多很多小应用程序的人(就像我一样),那么整个过程就是低效的。
    • 我们只是让旧浏览器兼容。使用旧版浏览器的用户比例非常低。这种转译/编译没有其他好处。我经常问这个问题,我们真的关心旧浏览器吗?
    • 如果您正在构建必须再次重复整个过程的小型应用程序,请考虑使用lerna。你可以用它管理本地依赖。并且您可以拥有处理所有项目的全局配置。这是我在当前组织中实施的内容。我们有 10-12 个小应用程序。我只使用 1 个构建、测试、lint 配置,
    猜你喜欢
    • 2020-11-17
    • 1970-01-01
    • 2011-12-15
    • 1970-01-01
    • 2019-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多