Javascript AngularJS:在时间轴中解析HTML事件
在调试angularjs应用程序的过程中,我在开发工具中发现了许多解析html事件 时间线显示这个事件是由Javascript AngularJS:在时间轴中解析HTML事件,javascript,angularjs,performance,google-chrome-devtools,Javascript,Angularjs,Performance,Google Chrome Devtools,在调试angularjs应用程序的过程中,我在开发工具中发现了许多解析html事件 时间线显示这个事件是由jQuery.extend.buildFragment调用的,我很难理解是什么指令调用了parse html 我如何检测,究竟是什么导致解析html事件?原因可能是重复的ng,但我不确定 这些事件会减慢$scope.$apply的速度 angular中的每个部分html都将触发解析html事件,如ng include、ng repeats、directive和$digest循环 此外,使用j
jQuery.extend.buildFragment
调用的,我很难理解是什么指令调用了parse html
我如何检测,究竟是什么导致解析html事件?原因可能是重复的ng
,但我不确定
这些事件会减慢
$scope.$apply
的速度 angular中的每个部分html都将触发解析html事件,如ng include、ng repeats、directive和$digest循环
此外,使用jQuery将为初始化jQuery实例带来大量开销。当您调用或指令或angular调用element.html('something tags')时,会调用jQuery或jQlite buildFragment,后者反过来会写入innerHTML,这会导致浏览器中的parse html事件,并引导这些子级查找更多指令并编译它们,直到完成
要最小化这些,您需要批处理这些,但角度的性质将很难直接完成。可能您可以尝试使用angular 1.3+中的一次性绑定语法::或减少监视程序,这样angular就不必一次又一次地解析html。这是哪个工具?也许这个工具只是在解析代码行时记录下来进行分析?这是一个chrome开发工具,我猜,它只是记录浏览器事件,探索调用堆栈,它在屏幕截图的底部,有趣的行被截断:(@Andrey sure,这里有一个完整的调用堆栈jquery句柄数据:)@谢谢,你说得对。类似ng repeat或ng include这样的东西会造成这种情况。你可以把你的评论作为回答,我会接受的。