Ich bin neu in Angular, aber ich habe schon gehört (und read) einige "Gerüchte" über sein Rendering-Modell und wie es anders ist als zum Beispiel React.Verwendet Angular DOM diffing oder muss es jedes Listenelement "neu rendern"?
Ich habe einige Beiträge von Angular-Experten gelesen, die behaupten, dass, wenn Sie lange Listen mit Angular rendern müssen, es langsam sein könnte, weil Angular die gesamte Liste neu rendern würde, wenn sich etwas ändert, während React (zum Beispiel) msgstr "" "wird die gesamte Liste nicht von Grund auf neu rendern, wenn sie bereits gerendert wurde, aber intern werden die gerenderten DOM Elemente nachverfolgt und beim neuen Aufruf wird ein neues virtuelles DOM erstellt, mit dem vorherigen verglichen und nur die Änderungen übernommen"
(von einer zufälligen Blog-Post über Angular Rendering-Probleme zitiert)
so wie ich Angular begann Lernen, war mein erstes, was probiere das aus.
Und es scheint, dass ich das Problem nicht reproduzieren können ...
ist hier ein Dummy Plunker, die ich created das Problem zu reproduzieren.
Sie neue Elemente zu einer Liste von Nachrichten hinzufügen können, die mit gerendert ng-repeat wie folgt aus:
<table>
<tr ng-repeat="m in messages" class="{{name}}">
<td>{{m.message}}</td>
<td>{{m.date}}</td>
</tr>
</table>
Sie auf eine Schaltfläche klicken können, die ein solches Element nicht aktualisieren, und Sie können eine andere Eigenschaft aktualisieren Das ist völlig unabhängig von der Liste (name
)
Jetzt, wenn ich Developer Toolbar öffnen und HTML-Attribute eines Elements in der Tabelle zu ändern und dann auf "eine neue Nachricht hinzufügen" klicken, gehen meine Änderungen nicht verloren oder mit Angular überschrieben - es scheint, dass Angular das DOM nicht vollständig neu rendert. Es scheint ziemlich schlau zu sein.
Hat Angular in letzter Zeit begonnen, DOM zu verwenden? (Meine Demo verwendet Angular 1.4.0 beta)
Nur weil aus Sicht der DOM-Rendering sehe ich nur nicht den großen Unterschied zwischen React und Angular.
Können Sie mir einen Anwendungsfall zeigen, der den Nachteil von Angulars Rendering-Modell zeigt?
Das scheint mir nicht "zu breit". Die primäre Frage, die das OP stellt, ist über eine * spezifische * Mechanik von Angular .. – user2864740
Ihre Fragen sind ein bisschen breit, weil es wirklich einige Fragen stellt, und möglicherweise eine bessere Passform auf Programmers SE. Wie auch immer, Angular unterscheidet sich nicht wie React, aber ng-repeat hält mit dem, was es wiederholt, und den damit verbundenen Elementen Schritt. Es wird nur ändern, was geändert werden muss. Siehe die Option 'track by' von' ng-repeat'. Die Tracking-Effizienz von Angular in dieser Hinsicht ist der Grund, warum Duplikate in 'ng-repeat' nicht erlaubt sind, es sei denn, Sie verwenden die' track by'-Option, um zu ändern, welche Angular-Uhren die Dinge synchron halten. – m59
Die Wahrheit über Blog-Posts zu untersuchen, die unbestätigte Behauptungen über bestimmte Technologien aufstellen, ist nicht wirklich unsere Spezialität und auch nicht die Spezialität von Programmers.SE. –