gpt4 book ai didi

angular - Angular 2 中 Zone.js 的用途是什么

转载 作者:太空狗 更新时间:2023-10-29 16:48:18 25 4
gpt4 key购买 nike

目前正在学习Angular 2.0 并且我遇到了文件Zone.js,我想知道它的目的是什么文件 Zone.js 以及它将如何使我的应用程序变得更好。

最佳答案

区域是跨异步任务持续存在的执行上下文,并允许区域的创建者观察和控制区域内代码的执行。

我认为在 angular2 中使用 zonejs 的主要目的知道何时渲染

根据 NgZone Primer (第 5 章:用例/用例 3:框架自动渲染)

Frameworks, such as Angular, need to know when all of the application work has completed and perform DOM update before the host environment performs the pixel rendering. In practice this means that the framework is interested when the main task and the associated micro tasks have executed but before the VM hands over the control to the host.

Angular 使用区域来修补异步 API(addEventListener、setTimeout() 等),并在每次发生异步事件时使用来自这些修补 API 的通知来运行更改检测。

对于这个 Angular 区域有 onMicrotaskEmpty 事件

https://github.com/angular/angular/blob/2.2.4/modules/%40angular/core/src/zone/ng_zone.ts#L199

ApplicationRef订阅这个事件来触发变化检测(Application.tick)

https://github.com/angular/angular/blob/2.2.4/modules/%40angular/core/src/application_ref.ts#L405-L406

此外,zonejs 可用于调试、测试和分析。如果您遇到一些错误,它可以帮助您查看整个调用堆栈。

区域补丁异步 API,例如:

Promise
XHR
fetch
Error
addEventListener
removeEventListener
FileReader
WebSocket
MutationObserver
WebKitMutationObserver
document.registerElement
navigator.geolocation.getCurrentPosition
navigator.geolocation.watchPosition

copy cut paste abort blur focus canplay canplaythrough change click contextmenu
dblclick drag dragend dragenter dragleave dragover dragstart drop
durationchange emptied ended input invalid keydown keypress keyup
load loadeddata loadedmetadata loadstart message
mousedown mouseenter mouseleave mousemove mouseout mouseover mouseup
pause play playing progress ratechange reset scroll
seeked seeking select show stalled submit suspend
timeupdate volumechange waiting
mozfullscreenchange mozfullscreenerror mozpointerlockchange
mozpointerlockerror error webglcontextrestored webglcontextlost webglcontextcreationerror

setTimeout/clearTimeout
setInterval/clearInterval
setImmediate/clearImmediate

requestAnimationFrame/cancelAnimationFrame
mozRequestAnimationFrame/mozCancelAnimationFrame
webkitRequestAnimationFrame/webkitCancelAnimationFrame

alert
prompt
confirm

这篇文章可能有助于理解它在 angular2 中的工作原理

关于angular - Angular 2 中 Zone.js 的用途是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40902572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com