Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Zone.js在Angular 2中有什么用途_Angular_Typescript - Fatal编程技术网

Zone.js在Angular 2中有什么用途

Zone.js在Angular 2中有什么用途,angular,typescript,Angular,Typescript,目前我正在学习Angular2.0,我访问了Zone.js文件,我想知道Zone.js文件的用途是什么,以及它如何使我的应用程序更好。Zone是一种在异步任务之间持续存在的执行上下文,并允许区域创建者观察和控制区域内代码的执行 我认为在angular2中使用zonejs的主要目的是知道何时渲染 根据(第5章:用例/用例3:框架自动渲染) 框架,比如Angular,需要知道所有应用程序 工作已完成,并在主机环境之前执行DOM更新 执行像素渲染。实际上,这意味着 框架感兴趣的时候主要是任务和相关的微

目前我正在学习Angular2.0,我访问了Zone.js文件,我想知道Zone.js文件的用途是什么,以及它如何使我的应用程序更好。

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

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

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

框架,比如Angular,需要知道所有应用程序 工作已完成,并在主机环境之前执行DOM更新 执行像素渲染。实际上,这意味着 框架感兴趣的时候主要是任务和相关的微任务 任务已执行,但在VM将控制权移交给 主持人

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

对于此角度区域,有
onMicrotaskEmpty
事件

并且
ApplicationRef
订阅此事件以触发更改检测(
Application.tick

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中的工作原理


Zonejs是Angularjs 2中使用的核心库之一。Zonejs用于维护单级或多级异步方法的上下文执行。所以,这意味着它有助于跟踪当前正在执行的异步方法的父上下文

示例-

Zone.current.fork({}).run(函数(){
Zone.current.myZoneVar=true;
console.log('Assigned myZoneVar');
设置超时(()=>{
log('In timeout',Zone.current.myZoneVar);
},1000);
});
console.log('Out side',Zone.current.myZoneVar)

Zone.js用于异步调用,内部用于错误,堆栈跟踪2正在使用它。因此,您不能忽略此脚本。

在simple language Zone.js中是angular 2在发生任何更改时用于更新应用程序视图的api或程序集。

区域是跨异步任务持久化的执行上下文。
例如:事件、XMLHttpRequests和计时器(setTimeout()、setInterval())等。

Angular依赖zone.js在本机JavaScript操作引发事件时运行Angular的更改检测过程。Zone.js是目前由TC39委员会制定JavaScript语言标准的规范的实现。Zone.js是Angular变化检测的关键

Zone围绕浏览器中的所有异步操作创建一个包装器,例如用户交互、HTTP、计时器以及可能导致状态更改的任何其他更改

区域知道这些操作何时完成。反过来,订阅来自区域的通知,以便在其中一个操作完成时通知。这让Angular知道它可以运行其更改检测算法,并重新渲染任何已更改的内容

这将最大限度地减少任何渲染搅动,并提高渲染效率