Webpack/Babel 和反应脚本之间的区别

Difference between Webpack/Babel and react-scripts

最近我开始研究 web pack 和 react-scripts,我想知道使用它们的优缺点以及它们之间的区别。

WebPack 和 react-scripts 略有不同。

Webpack 用于为您的网络应用程序编译捆绑包,它可以是自由形式的并且有一些入口点。此外,webpack 与 babel-presets 一起使用,它允许您在相对较旧的浏览器中使用现代 ES6+ 结构。另外,webpack 负责在一个文件中组装依赖 node_modules,并可能对其进行压缩和优化。 你可以在这里阅读更多关于 webpack 哲学的信息:https://webpack.js.org/concepts/

React-scripts 只是用于启动一些定制的 webpack-dev-server 的入门工具包,它被配置为与为 React 游乐场提供的样板一起工作。这只是演示目的。大多数现代网络库都有自己的入门工具包,甚至服务器端库也有,例如https://github.com/reimagined/resolve/tree/master/packages/resolve-scripts 等等

基本上来说,他们有不同的目的,通常会一起出现。我将解释它们的设计目的。

通天塔

Babel 是一个转译器。它可以将各种高版本的ECMAScript(不仅是ECMAScript,而且很容易理解)翻译成ES5,浏览器支持更广泛(尤其是老版本)。它的主要工作是将不受支持或最前沿的语言特性转换为 ES5。

Webpack

Webpack 是一个依赖分析器和模块打包器。例如,如果模块 A 需要 B 作为依赖,模块 B 需要 C 作为依赖,那么 webpack 将生成 C -> B -> A 的依赖关系图。在实践中它比这复杂得多,但一般概念是Webpack将具有复杂依赖关系的模块打包成bundle。关于webpack和babel的关系:webpack在处理依赖的时候,一定要把所有的东西都变成javascript,因为webpack工作在javascript之上。因此,它使用不同的加载程序将不同类型的 resources/code 翻译成 javascript。当我们需要 ES6 或 ES7 特性时,我们使用 babel-loader 来完成。

反应脚本

当我们开始一个基于 React 的项目时,设置构建环境是一项艰巨且耗时的工作。为了解决这个问题,React 的开发人员创建了一个名为 react-scripts 的 npm 包,其中包含大多数人对普通 React 应用程序所需的许多基本设置。 Babel 和 webpack 是 included as dependencies in react-scripts