Ich habe vor einiger Zeit mit dem Batarang-Plugin getüftelt, um etwas Leistung zu analysieren. Ich bemerke, dass am Anfang jedes Logs ein Abschnitt steht, der dem sogenannten regularyInterceptedExpression gewidmet ist. Kann mir jemand erklären, was das bedeutet und welche Möglichkeiten es gibt, die Leistung zu verbessern? Ich habe irgendwo gelesen, dass die Eigenschaft '=' in Direktiven verwendet werden könnte. Wenn jemand anderes dies gesehen hat, gibt es eine Lösung?Batarang regularInterceptedExpression
Antwort
Wenn Sie den AngularJS-Code kennen, können Sie innerhalb der Funktion addInterceptor(parsedExpression, interceptorFn)
die Funktion regularInterceptedExpression(scope, locals, assign, inputs)
definieren. Der einzige Platz, an dem die Funktion addInterceptor(parsedExpression, interceptorFn)
verwendet wird, ist die Funktion $parse(exp, interceptorFn, expensiveChecks)
. Hier werden der String und andere Uhren in Funktionen umgewandelt. Sie müssen die angular.js
-Datei
1) verbessern die $parse(exp, interceptorFn, expensiveChecks)
Funktion aktualisieren, um die Quelle der Analyse zu halten:
Finden Sie das Ende des Verfahrens und jedes Schaltergehäuse Ende Update mit den $$source
auf das erste Argument Einstellung von addInterceptor
Funktion.
parsedExpression.$$source = exp; // keep the source expression handy
return addInterceptor(parsedExpression, interceptorFn);
case 'function':
exp.$$source = exp; // keep the source expression handy
return addInterceptor(exp, interceptorFn);
default:
noop.$$source = exp; // keep the source expression handy
return addInterceptor(noop, interceptorFn);
2) innerhalb der regularInterceptedExpression
Funktion sammeln die Statistiken von Anrufe an diese Funktion:
var fn = regularWatch ? function regularInterceptedExpression(scope, locals, assign, inputs) {
var value = useInputs && inputs ? inputs[0] : parsedExpression(scope, locals, assign, inputs);
window.$$rieStats = window.$$rieStats || {};
window.$$rieStats[parsedExpression.$$source] = (window.$$rieStats[parsedExpression.$$source] ? window.$$rieStats[parsedExpression.$$source] : 0) + 1;
return interceptorFn(value, scope, locals);
3) Sie Anwendung ausführen und überprüfen Sie die Statistiken, dh die Entwicklungstools öffnen und schreiben $$rieStats
in die JavaScript Konsole. Sie sollten die Anzahl der Beobachter sehen, die von der Funktion regularInterceptedExpression
aufgerufen werden.
Object.keys($$rieStats).sort(function(a,b){return $$rieStats[a]-$$rieStats[b]}).reverse().forEach(function(item){ console.log(item, $$rieStats[item])})
TIPP: Sie können auch die $$rieStats
Zählen zu den anderen Zweig Funktion hinzufügen oneTimeInterceptedExpression
zu verfolgen, um eine Zeit als auch verbindlich.
- 1. Batarang Erweiterung gibt keine Ergebnisse
- 2. Bestätigen, dass Batarang defekt ist
- 3. AngularJS Debugging-Tools für IE wie Batarang
- 4. Endlosschleifen durch ng-repeat und Suchfilter Ergebnisse
- 5. Verwenden Sie angular.element, um Scope-Objekt von $ ID
- 6. Eckiges Duplikat für Millisekunden vor dem vollständigen Rendern
- 7. Wie Debug Zeit zwischen $ ionicView.beforeEnter und $ ionicView.enter
- 8. Vererbung für Bereiche in AngularJS
- 9. Was ist parentValueWatch in AngularJS?
- 10. Angular UI Bootstrap - modale Pop nicht auf dem ersten Klick
- 11. Einmalige Bindung mit Filter
- 12. Debugging Chrome-Erweiterung mit Zugriff auf chrome.devtools api
- 13. Der Winkelbereich wird beim Entfernen eines Objekts nicht aktualisiert.
- 14. AngularJS Datenbindung nicht
- 15. Leistungsmonitor der Digest-Zyklus-Ausführung
- 16. ng-click löst nicht die damit verbundene Funktion aus?
- 17. Angular Zwei-Wege-Bindung funktioniert nicht auf die gleiche Weise wie Plombier
- 18. Angular JS-Konsolenfehler: Zeilennummern beziehen sich nicht auf meine Quelldateien
- 19. Angular JS scope leak mit element.empty()
- 20. Wie Debuggen Typkonvertierung Fehler in AngularJS?
- 21. Wie kann die Eingabeaufforderung beim Hinzufügen eines neuen Werts zum Wörterbuch gelöscht werden?
- 22. Erstellen von benutzerdefinierten Filtern Angular JS in der Komponente mit Webpack (FountainJS)