AngularJS比jQuery更快吗?

4

编辑:根据答案,似乎AngularJS并不比jQuery更快,因为它也使用了jQuery的一个版本(jqLite)。

一个朋友告诉我,jQuery可能会很慢,因为它需要解析整个HTML页面才能找到DOM对象并对其进行操作。对于一个大页面来说,性能会变得很差。

然而,AngularJS可以更快地处理大型HTML页面,因为它“编译”HTML,并且可以更快地访问DOM对象。

这是真的吗?您能否给出一个可信的链接来证实这一点?

如果这不是真的,请给我一个关于jQuery和AngularJS在访问DOM对象方面的区别的解释。

我还通过性能基准进行了搜索,只找到了这个链接:link

如果Angular不比jQuery更快,那么这个测试为什么是错误的呢?


AngularJS内部确实使用了jQuery... - gdoron
我不认为这是正确的。任何东西如何“编译”HTML页面呢?AngularJS仍然是用JavaScript编写的。如果说有什么不同,我会说Angular比jQuery更慢,因为它必须监视作用域的变化,而如果你有一个大作用域的话,这是非常耗费资源的。 - soktinpk
@soktinpk,它不是慢,它做其他事情。飞机比冰箱快吗? - gdoron
如果一样的话,我想了解上面的图像。 - Ricardo
@gdoron 没错。一个是框架,一个是库。我只是发表了这个评论来解释,如果有什么区别的话,我的直觉会让我相信Angular比jQuery更慢,因为它执行的任务更加复杂(在我看来)。 - soktinpk
2
@Ricardo,我没有阅读你的jsperf,只看了结果。如果本地js比框架慢(就像你的比较中一样),那么肯定是做错了100%。 - gdoron
1个回答

10

每次加载页面时浏览器都会解析您的DOM,因此这不是一个框架问题。AngularJS是基于jqLite构建的,实际上是jQuery的更轻量级版本,所以我不认为它能更快...

另一件事是他们计算了什么操作?Angular是一个完全不同的东西,而jQuery只是一个用于更轻松和独立于浏览器的DOM操作的库。

编辑:必须有点原因...我想发生的是,某种程度上调用了$apply的angular循环使其非常快速。也许将元素添加到数组比将文本添加到字符串或将新创建的元素添加到另一个元素容器要快得多...当我将$apply函数移动到angularPush函数中时,它是最慢的。您还可以查看jQuery修改。这使得本地实现最快...

以下是更改后的实验:http://jsperf.com/angular-vs-jquery-vs-native/38


该链接解释了测试是如何进行的:从数组中填充列表进行渲染。 - Ricardo
1
没错,因为DOM操作很慢。我敢打赌,如果你把字符串保存在一个临时数组/字符串中,并在jQuery中最后一次更改DOM,它也会非常快。 - soktinpk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接