88

这是数字

  • 最小 + gzip 26k
  • 压缩包 90k
  • 原价450+k

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

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

4

2 回答 2

187

React 做了很多事情!React 最大的不明显部分可能是事件系统——React 不仅实现了自己的事件分派和冒泡,它还标准化了跨浏览器的常见事件,这样你就不必担心太多了。例如,SelectEventPlugin是一个内置事件“插件”,它提供了一个onSelect在所有浏览器中行为方式相同的事件。

虚拟 DOM实现也需要相当多的代码。很多精力都花在了性能优化上,这就是为什么未缩小的版本包含了ReactPerf,这是一个测量渲染性能的工具。在更新 DOM 时,React 还为您做了一些方便的事情,比如保持任何输入选择并保持当前滚动位置不变。

React 还有一些其他的技巧。最酷的一个是即使您没有浏览器环境,它也完全支持将组件呈现为 HTML 字符串,因此您可以在加载 JS 之前发送一个可以工作的页面。


你将 React 与什么进行比较?react-15.0.2.min.js43k (gzipped),但 jQuery 是 33kember-2.6.0.prod.js而是363k (also gzipped). 显然这些框架做的事情并不完全相同,但它们确实有很多重叠,所以我认为比较是合理的。

如果您担心下载大小,我不会太担心 JS 代码对此有影响。这是我现在在 Stack Overflow 页面右侧看到的广告:

它的下载大小为 95k——我不会三思而后行在页面中包含这样的图像,因为(即使我担心性能)通常还有很多其他与性能相关的问题需要修复,这些问题更有利可图。


简而言之,我不认为 React 有那么大,它的规模来自于它为帮助你所做的许多小事。您引用 React 的小型 API 作为 React 的代码应该很小的原因,但更好的问题可能是,“考虑到它为您所做的所有事情,React 的 API 怎么能如此简单?”

…但这是一个完全独立的问题。:) 希望我回答了你的问题——如果我没有回答,我很乐意扩展。

于 2013-11-06T09:48:01.307 回答
-1

一些想法.. 我对它的大小有一些相同的担忧,但是在使用它之后,不要开玩笑,如果它的大小为 5MB,我会使用它。就是这么好。也就是说,我确实决定尽可能减少对其他库的依赖。我将 jquery 用于两件事.. ajax 和自动 ajax 响应和请求处理(beforeSend 等),当令牌在登录后的响应中时将处理,然后确保每个 ajax 请求将其添加到授权标头之前发送。我用一个超小的简单的原生 javascript 替换了它。效果很好。另外,我试图使用 _underscore。我已经用 lodash 替换了它,它更小更快,虽然目前我没有使用它,所以可能会完全删除它。

这是一篇关于谷歌的文章,我发现它有一些使用原生 JS 而不是 jquery 的替代方案。

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

于 2014-04-16T16:11:12.677 回答