【发布时间】:2017-05-03 04:39:57
【问题描述】:
编辑:我错了。我正在使用 GULP、WEBPACK 和 BABEL,请查看我的答案。
我刚刚开始学习 React。基本上我见过的所有教程都使用 Webpack 和 babel。
Webpack 和 babel 很棒,但为什么大多数都需要 react 和 react-dom 作为模块与 webpack 捆绑文件一起打包?:
var React = require('react');
var ReactDOM = require('react-dom');
我们可以加载而不是通过 webpack 加载 react 的 cdn 文件位于 react 的安装页面 https://facebook.github.io/react/docs/installation.html 的底部,它比 webpack 输出的 react 模块小得多(至少对我来说,我已经推荐优化)。
页面有这些脚本标签:
开发文件(react 29kb,react-dom 137kb):
<script src="https://unpkg.com/react@15/dist/react.js"></script>
<script src="https://unpkg.com/react-dom@15/dist/react-dom.js"></script>
生产文件(.min.js)(react 7kb,react-dom 36kb):
<script src="https://unpkg.com/react@15/dist/react.min.js"></script>
<script src="https://unpkg.com/react-dom@15/dist/react-dom.min.js"></script>
生产文件总计 43kb,开发文件总计 166kb。 使用 webpack,我设法将 react 和 react-dom 缩小到 220kb。
对我来说,文件加载到浏览器时的大小与文件大小无关,至少在开发期间不会。
cdn 文件将生成 React 和 ReactDOM 全局变量,这确实很好,但我想将它们放在像教程这样的模块函数的本地会更好,虽然不会出现全局标识符冲突.问题在于,当我们需要 react.js npm 模块时,它本身有很多需要,依此类推,它会通过 webpack 和 babel 运行,这需要几秒钟才能在每次我们进行更改时生成捆绑文件在开发过程中,因为反应非常大。我们可以通过 webpack 的配置最小化 react 的输出这一事实并没有改变 webpack 需要一段时间才能产生最小化输出的事实。当我对我的 app.js 进行简单更改并希望捆绑文件尽快准备好时。
如果我使用 react cdn 文件并且仅将我自己的应用程序代码与 webpack 捆绑在一起,那么我的 app.js 中的更改几乎可以立即捆绑,而不是需要 react 大约需要 4-5 秒才能捆绑。
除了使用cdn之外,还有没有人可以解决这个问题?我可能以错误的方式使用 webpack 吗?
谢谢!
【问题讨论】:
-
您是否在每次文件更改时都在构建生产?因为我使用 webpack dev server 只重新处理更改的文件,切换到浏览和重新加载需要时间...
-
您可以将 React 和 ReactDOM 脚本拆分为 separate chunk,这样当您更改代码时它们就不会被重新编译。不过我完全是在猜测,从未尝试过。 :)
-
你们不也有同样的问题吗?
-
No Lucas 我没有使用 webpack 开发服务器。我正在使用你在 gulp 中使用的 npm 模块 webpack-stream 来创建包。我使用 gulp 是因为我已经在使用它进行其他构建过程。我可以让 webpack-stream 只重新处理已更改的文件吗?
-
看webpack dev server的时候我只是觉得webpack做的太多了,我已经有一个server了。另外,我认为它会在我的项目中生成一个临时目录,对吗?我不喜欢那个
标签: javascript node.js reactjs npm webpack