Czy spojrzałeś na źródło, aby zobaczyć, co robi? Pomocna wskazówka: nie patrz na zminimalizowaną wersję.
Pan Lister
6
Postanowiłem zapytać przed zanurzeniem się w kodzie. Chociaż planuję użyć React to i tak bym tam nurkował;)
Eldar Djafarov
2
26 tys. Wcale nie jest takie duże ..
BT
Ludzie mówią, że reakcja nie jest duża. Tak, sam respondjs jest bardzo mały (6,41 KB dla wersji 16.1.1), ale pamiętaj, że React wymaga do działania ReactDOM, a ReactDOM ma 92,4 KB
Dinh Tran
Odpowiedzi:
187
React działa całkiem sporo! Największą nieoczywistą częścią React jest prawdopodobnie system zdarzeń - React nie tylko implementuje własne wysyłanie i propagowanie zdarzeń, ale także normalizuje typowe zdarzenia w przeglądarkach, dzięki czemu nie musisz się o to martwić. Na przykład SelectEventPlugin to wbudowana „wtyczka” onSelectzdarzenia, która zapewnia zdarzenie zachowujące się w ten sam sposób we wszystkich przeglądarkach.
Wirtualny DOM realizacja bierze przyzwoitą ilość kodu, jak również; dużo wysiłku poświęca się na optymalizację wydajności, dlatego niezminifikowana wersja zawiera ReactPerf , który jest narzędziem do pomiaru wydajności renderowania. Aktualizując DOM, React robi również kilka wygodnych rzeczy, takich jak utrzymywanie dowolnego wyboru wejścia i utrzymywanie tej samej bieżącej pozycji przewijania.
React ma też kilka innych sztuczek w rękawie. Jednym z najfajniejszych jest to, że w pełni obsługuje renderowanie komponentu do ciągu HTML, nawet jeśli nie masz środowiska przeglądarki, więc możesz wysłać stronę, która działa nawet przed załadowaniem JS.
Z czym porównujesz React? react-15.0.2.min.jsjest 43k (gzipped), ale jQuery jest 33k, podczas gdy ember-2.6.0.prod.jsjest 363k (also gzipped). Oczywiście te frameworki nie robią dokładnie tych samych rzeczy, ale w dużym stopniu się pokrywają, więc myślę, że porównanie jest rozsądne.
Jeśli martwisz się o rozmiar pobierania, nie martwiłbym się zbytnio o kod JS, który się do tego przyczyni. Oto reklama, którą widzę teraz po prawej stronie mojej strony Stack Overflow:
Jego rozmiar do pobrania to 95k - nie zastanawiałbym się dwa razy nad umieszczeniem takiego obrazu na stronie, ponieważ (nawet gdybym martwił się o wydajność) jest zwykle wiele innych rzeczy związanych z wydajnością do naprawienia, które są bardziej lukratywne.
Krótko mówiąc, nie sądzę, aby React był tak duży, a jego rozmiar wynika z wielu małych rzeczy, które robi, aby ci pomóc. Cytujesz małe API Reacta jako powód, dla którego kod Reacta powinien być mały, ale lepszym pytaniem może być: „W jaki sposób API Reacta może być tak proste, biorąc pod uwagę wszystkie rzeczy, które robi dla Ciebie?”
… Ale to zupełnie osobna kwestia. :) Mam nadzieję, że odpowiedziałem na twoje pytanie - chętnie rozszerzę, jeśli nie.
Całkowicie odpowiedziałeś na moje pytanie. Reakcja jest niesamowita. Myślę o użyciu go na urządzeniach mobilnych, więc rozmiar jest ważny. Po prostu nie ma zbyt wielu informacji na temat tego, co robi. I myślę, że jest więcej sztuczek, których mogę użyć :) Czuję, że mogę się pozbyć rzeczy z jquery. A paulmillr / exoskeleton jest w samą porę :)
Eldar Djafarov
2
Zagłębiam się w zupełnie inną koncepcję tworzenia aplikacji. Zajrzyj na vimeo.com/78151404 i github.com/component/component - używając tych, których w ogóle nie potrzebujesz w jQuery i dobrze komponujesz się z jsxtransformations. A React wykonuje najtrudniejszą robotę - wszystko inne (modele, trasy, komunikacja z serwerem) może być pokryte przez mikrokomponenty.
Eldar Djafarov
30
Uwaga, używamy Reacta na mobilnej stronie Facebooka, gdzie rozmiar jest zdecydowanie niezwykle ważny :)
Vjeux
4
@lightblade Um ... nie. Użycie pamięci zależy od tego, ile alokacji tworzy Twój kod. React bardzo się stara, aby uniknąć alokacji.
Dan Abramov
2
@ 1nfiniti OK, zaktualizowano o nowe liczby, odkąd minęło dwa i pół roku.
Sophie Alpert
-1
Kilka przemyśleń ... Miałem podobne obawy co do rozmiaru, ale po użyciu, nie żartuję, użyłbym go, gdyby miał 5MB. To jest po prostu dobre. To powiedziawszy, zdecydowałem się zmniejszyć jak najwięcej zależności od innych bibliotek. Używałem jquery do dwóch rzeczy. Ajax i automatyczna odpowiedź AJAX i obsługa żądań (beforeSend, itp.), Która obsługiwałaby, gdy token był w odpowiedzi po zalogowaniu, a następnie upewniał się, że każde żądanie ajax dodało go do nagłówka Authorization wcześniej wysyłanie. Zastąpiłem to bardzo małym, prostym fragmentem natywnego javascript. Działa świetnie. Próbowałem też użyć _underscore. Zastąpiłem go lodash, który jest mniejszy i szybszy, chociaż obecnie go nie używam, więc mogę go całkowicie usunąć.
Oto jeden z wielu artykułów w Google, który znalazłem i ma kilka alternatyw wykorzystujących natywny JS zamiast jquery.
Odpowiedzi:
React działa całkiem sporo! Największą nieoczywistą częścią React jest prawdopodobnie system zdarzeń - React nie tylko implementuje własne wysyłanie i propagowanie zdarzeń, ale także normalizuje typowe zdarzenia w przeglądarkach, dzięki czemu nie musisz się o to martwić. Na przykład SelectEventPlugin to wbudowana „wtyczka”
onSelect
zdarzenia, która zapewnia zdarzenie zachowujące się w ten sam sposób we wszystkich przeglądarkach.Wirtualny DOM realizacja bierze przyzwoitą ilość kodu, jak również; dużo wysiłku poświęca się na optymalizację wydajności, dlatego niezminifikowana wersja zawiera ReactPerf , który jest narzędziem do pomiaru wydajności renderowania. Aktualizując DOM, React robi również kilka wygodnych rzeczy, takich jak utrzymywanie dowolnego wyboru wejścia i utrzymywanie tej samej bieżącej pozycji przewijania.
React ma też kilka innych sztuczek w rękawie. Jednym z najfajniejszych jest to, że w pełni obsługuje renderowanie komponentu do ciągu HTML, nawet jeśli nie masz środowiska przeglądarki, więc możesz wysłać stronę, która działa nawet przed załadowaniem JS.
Z czym porównujesz React?
react-15.0.2.min.js
jest43k (gzipped)
, ale jQuery jest 33k, podczas gdyember-2.6.0.prod.js
jest363k (also gzipped)
. Oczywiście te frameworki nie robią dokładnie tych samych rzeczy, ale w dużym stopniu się pokrywają, więc myślę, że porównanie jest rozsądne.Jeśli martwisz się o rozmiar pobierania, nie martwiłbym się zbytnio o kod JS, który się do tego przyczyni. Oto reklama, którą widzę teraz po prawej stronie mojej strony Stack Overflow:
Jego rozmiar do pobrania to 95k - nie zastanawiałbym się dwa razy nad umieszczeniem takiego obrazu na stronie, ponieważ (nawet gdybym martwił się o wydajność) jest zwykle wiele innych rzeczy związanych z wydajnością do naprawienia, które są bardziej lukratywne.
Krótko mówiąc, nie sądzę, aby React był tak duży, a jego rozmiar wynika z wielu małych rzeczy, które robi, aby ci pomóc. Cytujesz małe API Reacta jako powód, dla którego kod Reacta powinien być mały, ale lepszym pytaniem może być: „W jaki sposób API Reacta może być tak proste, biorąc pod uwagę wszystkie rzeczy, które robi dla Ciebie?”
… Ale to zupełnie osobna kwestia. :) Mam nadzieję, że odpowiedziałem na twoje pytanie - chętnie rozszerzę, jeśli nie.
źródło
Kilka przemyśleń ... Miałem podobne obawy co do rozmiaru, ale po użyciu, nie żartuję, użyłbym go, gdyby miał 5MB. To jest po prostu dobre. To powiedziawszy, zdecydowałem się zmniejszyć jak najwięcej zależności od innych bibliotek. Używałem jquery do dwóch rzeczy. Ajax i automatyczna odpowiedź AJAX i obsługa żądań (beforeSend, itp.), Która obsługiwałaby, gdy token był w odpowiedzi po zalogowaniu, a następnie upewniał się, że każde żądanie ajax dodało go do nagłówka Authorization wcześniej wysyłanie. Zastąpiłem to bardzo małym, prostym fragmentem natywnego javascript. Działa świetnie. Próbowałem też użyć _underscore. Zastąpiłem go lodash, który jest mniejszy i szybszy, chociaż obecnie go nie używam, więc mogę go całkowicie usunąć.
Oto jeden z wielu artykułów w Google, który znalazłem i ma kilka alternatyw wykorzystujących natywny JS zamiast jquery.
http://www.sitepoint.com/jquery-vs-raw-javascript-1-dom-forms/
źródło