javascript / expert
Snippet
Optimierung externer Bibliothekslogik außerhalb von NgZone
NgZone (Zone.js) fängt asynchrone Operationen ab, um die Änderungserkennung auszulösen. Das Ausführen von Hochfrequenz-Logik (wie Mausbewegungen oder Chart-Animationen) innerhalb von 'runOutsideAngular' verhindert unnötige globale Change-Detection-Zyklen und verbessert die Reaktionsfähigkeit der Anwendung bei der Integration von Nicht-Angular-Bibliotheken erheblich.
snippet.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Component({ ... })export class ChartComponent implements OnInit {constructor(private zone: NgZone, private el: ElementRef) {}ngOnInit() {this.zone.runOutsideAngular(() => {// Third-party library doing heavy DOM manipulation or timersconst chart = new HeavyChartLibrary(this.el.nativeElement);chart.on('render', () => {console.log('Rendering...');});});}}
angular
Erklärung
1
this.zone.runOutsideAngular(() => { ... })
Führt den Codeblock aus, ohne den Änderungserkennungsmechanismus von Angular auszulösen.
2
new HeavyChartLibrary(...)
Stellt sicher, dass interne Timer/Events der Bibliothek nicht den UI-Check der gesamten App aufwecken.