Reactjs 为什么是React';s的文件大小如此之大,因为它的API很小?

Reactjs 为什么是React';s的文件大小如此之大,因为它的API很小?,reactjs,Reactjs,这是电话号码 min+gzip 26k gzip 90k 原450+k React的文档中没有很多功能。为什么它这么大 我觉得这是轻量级DOM的实现。但我想确定一下 React的作用相当大!React最大的不明显的部分可能是事件系统——React不仅实现了自己的事件分派和冒泡,还规范了跨浏览器的常见事件,因此您不必太担心它。例如,是一个内置事件“插件”,它提供了一个onSelect事件,该事件在所有浏览器中的行为方式相同 虚拟DOM实现也需要相当数量的代码;在性能优化上花费了大量精力,这就是

这是电话号码

  • min+gzip 26k
  • gzip 90k
  • 原450+k
React的文档中没有很多功能。为什么它这么大


我觉得这是轻量级DOM的实现。但我想确定一下

React的作用相当大!React最大的不明显的部分可能是事件系统——React不仅实现了自己的事件分派和冒泡,还规范了跨浏览器的常见事件,因此您不必太担心它。例如,是一个内置事件“插件”,它提供了一个
onSelect
事件,该事件在所有浏览器中的行为方式相同

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

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


你在拿什么作比较
react-15.0.2.min.js
43k(gzip)
,但是jQuery是33k,而
ember-2.6.0.prod.js
363k(也是gzip)
。显然,这些框架做的事情并不完全相同,但它们确实有很多重叠,因此我认为这种比较是合理的

如果您担心下载的大小,我不会太担心JS代码对下载的影响。我现在在堆栈溢出页面的右侧看到一则广告:

它的下载量是95k——我不会再三考虑在页面中包含这样的图像,因为(即使我担心性能)通常有太多与性能相关的东西需要修复,而这些东西更有利可图


简言之,我认为React没有那么大,它的大小来自于它为帮助你所做的许多小事情。您引用React的小API作为React的代码应该很小的原因,但更好的问题可能是,“React的API在为您做的所有事情中如何能够如此简单?”


…但这是一个完全不同的问题。:)希望我回答了你的问题——如果我没有回答,我很乐意进一步回答。

一些想法。。我对它的大小也有一些相同的担忧,但是在使用它之后,没有开玩笑,如果它的大小是5MB,我会使用它。就这么好。也就是说,我确实决定尽可能减少对其他库的依赖。我使用jquery实现了两件事。。ajax和自动ajax响应和请求处理(beforeSend等),该处理将在登录后响应中包含令牌时进行处理,然后确保每个ajax请求在发送之前将其添加到授权头中。我将其替换为一个非常简单的本地javascript。效果很好。此外,我还试图使用下划线。我已经用lodash替换了它,它更小更快,尽管目前我没有使用它,所以可能会将其全部删除

这里有一篇关于google的文章,我发现它有一些使用原生JS而不是jquery的替代方法


您是否查看了源代码,以了解它的功能?有用的提示,不要看缩微版。我决定在潜入代码之前先问一下。虽然我计划使用react,但无论如何我都会在那里潜水;)26k根本没那么大人们说react没那么大。是的,reactjs本身非常小(16.1.1版为6.41KB),但请记住React需要一个ReactDOM才能工作,而ReactDOM的大小为92.4KB您完全回答了我的问题。反应太棒了。我正在考虑将其用于移动设备,因此尺寸很重要。只是没有太多关于它的信息。我认为我可以使用更多的技巧:)我觉得我可以摆脱jquery的东西。和paulmillr/外骨骼‎ 我正在挖掘完全不同的应用程序构建概念。检查并使用那些你根本不需要jQuery的东西,compy可以很好地处理JSX转换。React做的工作最难——其他一切(模型、路由、服务器通信)都可以由微组件覆盖。请注意,我们在Facebook的移动网站上使用React,其大小绝对非常重要:)@lightblade Um。。。不。内存使用情况取决于代码分配的数量。React极力避免分配。@1nfiniti好的,已经两年半了,更新了一些新的数字。如果您针对多个浏览器,您也可以使用所使用的部分构建一个自定义版本的jQuery