Jestem nowy w Angular, ale już słyszałem (i read) niektóre "plotki" na temat jego modelu renderowania i jak to się różni od na przykład React.Czy Angular używa rozszerzenia DOM, czy musi "renderować ponownie" każdy element listy?
Czytałem niektóre posty ekspertów Angular, którzy twierdzą, że jeśli musisz renderować długie listy z Angular, może to być powolne, ponieważ Angular ponownie wyświetli całą listę, jeśli coś się zmieni, podczas gdy React (na przykład) "nie wyrenderuje całej listy od zera po jej wyrenderowaniu, ale będzie wewnętrznie śledzić wyrenderowane elementy DOM, a po nowym wywołaniu utworzyć nowy wirtualny DOM, porównać go z poprzednim i zastosować tylko zmiany"
(cytat z losowym blogu o kątowe kwestii rendering)
Więc jak zacząłem uczyć kątowe, moją pierwszą rzeczą było wypróbowanie tego.
I wydaje się, że nie mogę odtworzyć problem ...
Oto obojętne Plunker które created odtworzyć problem.
Można dodać nowe elementy do listy wiadomości, które są renderowane z ng-powtarzać tak:
<table>
<tr ng-repeat="m in messages" class="{{name}}">
<td>{{m.message}}</td>
<td>{{m.date}}</td>
</tr>
</table>
Możesz kliknąć na przycisk, który można zaktualizować jeden taki element, a można aktualizować inną nieruchomość który jest całkowicie niezwiązany z listą (name
)
Teraz, jeśli otworzę pasek narzędzi dla programistów i zmodyfikuję atrybuty HTML przedmiotu w tabeli, a następnie kliknę "dodaj nową wiadomość", moje modyfikacje nie zostaną zgubione lub nadpisane przez Angular - wydaje się, że Angular nie w pełni renderuje DOM. Wydaje się dość sprytny.
Czy Angular zaczął ostatnio używać rozszerzenia DOM? (Moje demo używa Angulara 1.4.0 beta)
Właśnie dlatego, że z punktu widzenia renderowania DOM, po prostu nie widzę dużej różnicy między React i Angular.
Czy możesz pokazać mi przypadek użycia, który pokazuje wady modelu renderingu Angular?
Nie wydaje mi się to "zbyt szerokie". Podstawowe pytanie, jakie zadaje OP, dotyczy * specyficznego * mechanika Angulara .. – user2864740
Twoje pytania są dość szerokie, ponieważ naprawdę zadają kilka pytań i mogą być lepiej dopasowane do Programmers SE. W każdym razie Angular nie różni się od React, ale powtórzenie ng nie nadąża za tym, co się powtarza i związanymi z nim elementami. Zmieni to tylko to, co należy zmienić. Zobacz opcję 'track by' z' ng-repeat'. Skuteczność śledzenia Angulara w tej sprawie polega na tym, że duplikaty nie są dozwolone w 'ng-repeat', chyba że użyjesz opcji' track by', aby zmienić to, co zegarki Angular utrzymują synchronizację. – m59
Badanie prawdziwości postów na blogu, które zawierają bezpodstawne stwierdzenia dotyczące niektórych technologii, nie jest tak naprawdę naszą specjalnością, ani specjalnością programisty.SE. –