为什么React的文件大小如此之大?

这里是数字

  • 分钟+ gzip 26k
  • gzip 90k
  • 原来的450 + K

React在文档中没有很多特性。 为什么这么大?

我有一种感觉,那就是轻量级DOM的实现。 但我想确定一下。

React做了很多! React最大的非显而易见的部分可能是事件系统 – React不仅实现了自己的事件分派和冒泡,而且使浏览器中的常见事件正常化,所以你不必担心这个事件。 例如, SelectEventPlugin是一个内置的事件“插件”,它提供了一个onSelect事件,在所有浏览器中的行为都是一样的。

“虚拟DOM”实现也需要大量的代码。 在性能优化方面花费了大量的精力,这就是为什么未分化的版本包括ReactPerf,这是一个测量渲染性能的工具。 在更新DOM时,React也会为您保留一些方便的东西,如维护任何inputselect并保持当前滚动位置相同。

React也有一些其他的技巧。 最酷的之一就是它完全支持将组件呈现给HTMLstring,即使你没有浏览器环境,所以你可以发送一个甚至在JS加载之前工作的页面。


你在比较什么反应? react-15.0.2.min.js是43k(gzipped),但是jQuery是33k,而ember-2.6.0.prod.js是363k(也是gzip)。 显然这些框架并不完全一样,但它们有很多重叠,所以我认为比较是合理的。

如果你担心下载大小,我不会太担心JS代码的贡献。 这里是我在我的堆栈溢出页面右侧看到的广告:

它的下载大小是95k–我不会考虑在页面中包含像这样的图像,因为(即使我担心performance),通常还有很多其他与性能有关的东西需要修复,而且更有利可图。


简而言之,我认为React不是那么大,它的大小来自于它帮助你的很多小事情。 您引用React的小API是React的代码应该很小的一个原因,但是更好的问题可能是“React的API如何能够简单地给出所有的事情?”

…但这是一个完全独立的问题。 :)希望我回答你的问题 – 如果我没有,很高兴扩大。

一些想法..我有一些关于它的大小一样的问题,但使用后,没有开玩笑,我会使用它,如果它是5MB的大小。 这很好。 也就是说,我决定尽可能减less对其他库的依赖。 我正在使用jQuery的两件事情.. ajax和自动ajax响应和请求处理(beforeSend等),当一个令牌在login后响应时,然后确保每个ajax请求将其添加到Authorization标头之前发送。 我用一个超级简单的原生JavaScript代替了这个。 很好用。 另外,我正在尝试使用_underscore。 我已经用lodashreplace了它,虽然目前我没有使用它,所以可以把它完全删除。

这里有一篇文章,很多在谷歌上,我发现有一些替代使用原生JS超过jQuery。

http://www.sitepoint.com/jquery-vs-raw-javascript-1-dom-forms/