使用Zone.js目前正在學習角2.0我來進行的跨文件Zone.js,我想知道什麼是文件區的目的。 js以及它如何讓我的應用程序更好。什麼是角2
什麼是角2
回答
區域是一個持續跨異步任務的執行上下文,並允許區域的創建者觀察和控制區域內代碼的執行。
我認爲的主要用途在angular2中使用zonejs是知道何時渲染。
根據NgZone Primer(第5章:用例/使用案例3:框架自動渲染)
框架,如角度,需要知道什麼時候所有的應用程序的 工作已經完成,並執行DOM更新在主機環境 執行像素呈現之前。實際上,這意味着當主任務和相關聯的任務已經執行但在VM將控制權移交給主機之前,框架感興趣。
角使用帶補丁的API異步(的addEventListener,setTimeout的(),...),並使用通知這些補丁API的運行變化檢測每個一些異步事件發生的時間。
對於該角區具有onMicrotaskEmpty
事件
https://github.com/angular/angular/blob/2.2.4/modules/%40angular/core/src/zone/ng_zone.ts#L199
和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(function(){
Zone.current.myZoneVar = true;
console.log('Assigned myZoneVar');
setTimeout(()=>{
console.log('In timeout', Zone.current.myZoneVar);
},1000);
});
console.log('Out side', Zone.current.myZoneVar);
<script src="https://unpkg.com/[email protected]?main=browser"></script>
注:PLZ,忽略控制檯錯誤。此代碼在jsfiddle中工作正常 - https://jsfiddle.net/subhadipghosh/0uqc9rdr/
在這裏,我們創建了我們當前區域的分支,並運行調用區域下的方法。該方法有一個異步調用(setTimeout)。但是因爲它在區域內,所以我們可以訪問區域變量。在最後一行,我們可以看到我們試圖訪問同一個變量的區域,但是它會有未定義的區域。
原帖 - http://technobelities.blogspot.in/2017/03/zonejs-overview-with-example.html
角2是利用Zonejs的變化檢測。每當發生任何變化,它是由在角2下面的代碼檢測 -
ObservableWrapper.subscribe(this.zone.onTurnDone,() => {
this.zone.run(() => {
this.tick();
});
});
tick() {
// perform change detection
this.changeDetectorRefs.forEach((detector) => {
detector.detectChanges();
});
}
角區發射onTrunDone事件開始變化檢測中的應用程序。
Zone.js用於異步調用,內部用於錯誤和堆棧跟蹤angular2正在使用它。所以你不能忽略這個javascript。
- 1. 什麼是角2
- 2. 什麼是調用在角2
- 3. 角2中的bundle.js.gz文件是什麼?
- 4. 角2個ngModel其中id是什麼
- 5. 角2 - 什麼是window.print在打字稿
- 6. 什麼是角JS
- 7. 角2測試業力。什麼測試
- 8. 什麼不對這個proxy.config:角2
- 9. 爲什麼observables被用於角度2
- 10. 爲什麼角2需要的node.js
- 11. 爲什麼2 /// 2在Javascript中是2?
- 12. 什麼是'A'角色?
- 13. 什麼是ODS角色?
- 14. 這個角色是什麼?
- 15. 這個角色是什麼?
- 16. 什麼是雙(::)在角js?
- 17. 什麼是「asset_version」的角色
- 18. 爲什麼角3跳過,什麼是角4測試版
- 19. 角2應用程序中的「app」是什麼?
- 20. 什麼是最好的方式使用角2材料設計
- 21. 我想用角2前端使用swagger API。什麼是步驟?
- 22. 角材料2沒有服務! $ mdMedia的等價物是什麼
- 23. 角2中element.replaceWith(element.children())的替代方法是什麼
- 24. 角2:「信息流是單向的」什麼意思?
- 25. 角2 ng服務的流程名稱是什麼?
- 26. 在角2中實現註銷的正確方法是什麼?
- 27. 什麼是SHA-2在互聯網安全中的角色?
- 28. 角2中jqGrid的最佳選擇是什麼?
- 29. 角度2:什麼是主機:{class}用於?
- 30. 什麼是角材料2組件中的cdk