Streszczenie
W tym artykule zbadamy, w jaki sposób Netflix poprawił wydajność front-end, przełączając się na wanilię JS. Netflix postanowił użyć React jako silnika szablonów po stronie serwera i wanilii JS do interakcji i manipulacji DOM w przeglądarce. To pozwoliło im zmniejszyć rozmiar pakietu JavaScript i poprawić ogólną wydajność.
1. Jak Netflix poprawił swoją wydajność front-end?
Netflix poprawił wydajność front-end, przełączając się na wanilię JS w celu interakcji i manipulacji DOM w przeglądarce. Nadal używają React jako silnika szablonów po stronie serwera.
2. Dlaczego Netflix postanowił przejść na wanilię JS?
Netflix przeszedł na wanilię JS, aby zmniejszyć rozmiar pakietu JavaScript i poprawić ogólną wydajność. Ta decyzja pozwoliła im wyeliminować niepotrzebne koszty ogólne używania React w przeglądarce.
3. Ile JavaScript początkowo zawierał strona Netflix?
Strona Netflix początkowo zawierała 300 kB JavaScript, który obejmował React i inny kod po stronie klienta, a także dane kontekstowe wymagane do nawadnienia stanu React.
4. Dlaczego zmniejsza rozmiar JavaScript ważny dla wydajności front-end?
Zmniejszenie rozmiaru JavaScript jest ważne dla wydajności front-end, ponieważ może skrócić czas potrzebny do pobrania i przeanalizowania kodu. Mniejsze pakiety JavaScript prowadzą do szybszych czasów ładowania i lepszych doświadczeń użytkowników.
5. Jaka jest korzyść z korzystania z React jako silnika szablonów po stronie serwera?
Korzystanie z React jako silnika szablonów po stronie serwera pozwala na dynamiczne renderowanie HTML na serwerze, co może poprawić wydajność i SEO. Umożliwia także ponowne wykorzystanie kodu między serwerem a klientem.
6. W jaki sposób Netflix przełączył się na wanilię JS, wpłynęło na wyniki na froncie?
Przejście Netflix na wanilię JS znacznie poprawiło ich wydajność front-end. Usuwając górną reakcję w przeglądarce, byli w stanie zmniejszyć rozmiar pakietu JavaScript i poprawić czas obciążenia.
7. Jakie podejście przyjęło Netflix, aby poprawić swoją wydajność front-end?
Netflix użył React jako silnika szablonów po stronie serwera i wanilii JS do interakcji i manipulacji DOM w przeglądarce. Takie podejście pozwoliło im zrównoważyć wydajność i możliwość utrzymania.
8. W jaki sposób zmniejszenie wielkości pakietów JavaScript przyniesie korzyści użytkownikom?
Zmniejszenie rozmiaru pakietów JavaScript może przynieść korzyści użytkownikom poprzez poprawę czasów ładowania strony, zmniejszając wykorzystanie danych i zapewniając płynniejsze wrażenia z przeglądania.
9. Jakie jest znaczenie decyzji Netflix o przejściu na wanilię JS?
Decyzja Netflix o przejściu na wanilię JS pokazuje znaczenie optymalizacji wydajności front-end, nawet dla dużych firm. Stanowi przykład dla innych programistów i organizacji, które chcą ulepszyć własne aplikacje internetowe.
10. Czego programiści mogą się nauczyć z front-end ulepszenia wydajności Netflix?
Deweloperzy mogą dowiedzieć się, jak ważne jest ocena i optymalizacji kodu JavaScript w celu uzyskania lepszej wydajności front-end. Mogą również rozważyć korzystanie z renderowania po stronie serwera z ramami takimi jak React w celu zwiększenia wydajności i doświadczenia użytkownika.
11. W jaki sposób korzystanie z reakcji jako serwera silnika szablonów SEO?
Korzystanie z React jako silnika szablonów po stronie serwera pozwala na dynamiczne renderowanie HTML na serwerze, co może poprawić SEO, dostarczając wyszukiwarki z w pełni renderowaną treść, a nie polegać na wykonaniu JavaScript.
12. Jakie inne technologie wykorzystały Netflix w swoim stosie?
Artykuł nie wspomina o określonych technologiach, ale podkreśla przełącznik na wanilię JS w celu interakcji front-end i manipulacji DOM. Możliwe, że Netflix używał innych narzędzi i bibliotek w swoim stosie.
13. Jak programiści mogą mierzyć wydajność front-end?
Deweloperzy mogą mierzyć wydajność front-end za pomocą narzędzi takich jak Lighthouse, WebPagetest i Chrome DevTools. Narzędzia te zapewniają wgląd w wskaźniki, takie jak czas ładowania strony, rozmiary aktywów i aktywność sieciowa.
14. Jakie są zalety korzystania z wanilii JS do rozwoju front-end?
Używanie wanilii JS do rozwoju front-end może prowadzić do szybszych czasów ładowania, zmniejszonych rozmiarów wiązek, poprawy wydajności i większej kontroli nad bazą kodową. Eliminuje również potrzebę dodatkowych zależności i kosztów ogólnych wprowadzonych przez ramy takie jak React.
15. Jak programiści mogą zoptymalizować swój kod JavaScript w celu uzyskania lepszej wydajności?
Deweloperzy mogą zoptymalizować swój kod JavaScript, minifikując i kompresując, zmniejszając niepotrzebne zależności, kod leniwy i używając technik takich jak dzielenie i buforowanie kodu i buforowanie. Mogą również nadać priorytet krytycznej ścieżki renderowania i zminimalizować zasoby blokujące renderowanie.
Jak Netflix dramatycznie poprawił wydajność frontu, przełączając się na wanilię JS
Prosty klon Netflix za pomocą API React i TMDB do pobierania filmów/programów telewizyjnych
Netflix
Pełny stos Netflix klon z React, NextJS, Tailwindcss, Prisma i MongoDB
Pełny stos Netflix klon z React, NextJS, Tailwindcss, Prisma i MongoDB
03 maja 2023
Netflix Strona docelowa klon z React.JS
Netflix Strona docelowa klon z React.JS
27 kwietnia 2023 r
Fullstack Netflix Clone Project z NextJS
Fullstack Netflix Clone Project z NextJS
06 kwietnia 2023
Klon Fullstack Netflix z NextJS i Tailwind CSS
Klon Fullstack Netflix z NextJS i Tailwind CSS
18 marca 2023 r
Klon Netflix wykonany w React i za pomocą VITE
Klon Netflix wykonany w React i za pomocą VITE
01 listopada 2022
Klon Netflix za pomocą ReactJS, API TMDB, baza ogniowa
Klon Netflix za pomocą ReactJS, API TMDB, baza ogniowa
02 października 2022
Netflix UI Clon wykonany z ReactJS i Pure CSS
Netflix UI Clon wykonany z ReactJS i Pure CSS
07 września 2022 r
Strona internetowa Netflix Clone za pomocą React
Strona internetowa Netflix Clone za pomocą React
29 sierpnia 2022 r
Klon Netflix za pomocą API React18, TypeScript, Material UI i TMDB API
Klon Netflix za pomocą API React18, TypeScript, Material UI i TMDB API
22 sierpnia 2022 r
Uproszczony klon Front End Netflix utworzony z React i CSS
Uproszczony klon Front End Netflix utworzony z React i CSS
01 sierpnia 2022
Klon Netflix za pomocą react JS
Klon Netflix za pomocą react JS
12 lipca 2022 r
Netflix klon z react JS i Firebase
Netflix klon z react JS i Firebase
06 lipca 2022 r
Zaawansowany gracz wideo z stylem Netflix oparty na wtyczce React-Player
Utwórz odtwarzacz wideo Netflix z React-Player, TypeScript i Styled-Components.
30 czerwca 2022 r
Netflix klon zbudowany z następnym.JS i Tailwind CSS
Netflix klon zbudowany z następnym.JS i Tailwind CSS
10 czerwca 2022 r
Klon Netflix, który zbudował z ReactJS
Klon Netflix, który zbudował z ReactJS
03 maja 2022
Klon Netflix wykonany z React, HTML, CSS
Klon Netflix wykonany z React, HTML, CSS
17 marca 2022 r
Klon Netflix wykonany za pomocą komponentów React, Firebase, Firestore i Styld
Klon Netflix wykonany za pomocą komponentów React, Firebase, Firestore i Styld
26 lutego 2022 r
Prosty klon Netflix za pomocą ReactJS
Prosty klon Netflix za pomocą ReactJS
17 lutego 2022 r
Klon Netflix zbudowany za pomocą React
Klon Netflix zbudowany za pomocą React
03 lutego 2022 r
Netflix UI klon z ReactJs do celów badawczych
Netflix UI klon z ReactJs do celów badawczych
27 stycznia 2022 r
Klon Netflix utworzony za pomocą React.JS
Klon Netflix utworzony za pomocą React.JS
21 stycznia 2022 r
Po prostu klon Netflix za pomocą ReactJS. Pobiera dane z TMDB API
Po prostu klon Netflix za pomocą ReactJS. Pobiera dane z TMDB API
26 grudnia 2021 r
Prosty klon główny ReactJS Netflix za pomocą Astra DB i GraphQL
Prosty klon główny ReactJS Netflix za pomocą Astra DB i GraphQL
21 grudnia 2021 r
Netflix Clone Application wykonana z React+TypeScript
Netflix Clone Application wykonana z React+TypeScript
15 grudnia 2021 r
Klon aplikacji Netflix z pełnym stosem za pomocą React Native i AWS wzmacnia
Klon aplikacji Netflix z pełnym stosem za pomocą React Native i AWS wzmacnia
28 listopada 2021 r
Przykładowy projekt Netflix zbudowany z React
Przykładowy projekt Netflix zbudowany z React
27 listopada 2021 r
Prosty klon Netflix za pomocą API React i TMDB do pobierania filmów/programów telewizyjnych
Prosty klon Netflix za pomocą API React i TMDB do pobierania filmów/programów telewizyjnych
17 listopada 2021 r
Netflix Strona główna Klon strony za pomocą React JS
Netflix Strona główna Klon strony za pomocą React JS
15 listopada 2021 r
Prosty klon Netflix za pomocą API React i TMDB do pobierania filmów/programów telewizyjnych
Prosty klon Netflix za pomocą API React i TMDB do pobierania filmów/programów telewizyjnych. Używa materiału interfejsu użytkownika dla frontend.
15 listopada 2021 r
Strona główna klonu Netflix zbudowana za pomocą React
Strona główna klonu Netflix zbudowana za pomocą React
08 listopada 2021
Netflix klon zbudowany z react JS i uwierzytelniony z Firebase
Netflix klon zbudowany z react JS i uwierzytelniony z Firebase
Jak Netflix dramatycznie poprawił wydajność frontu, przełączając się na wanilię JS
Netflix tak’t Całkowicie reaguj. Nadal używają go na serwerze, aby stworzyć swój początkowy HTML.
Ale pozbyli się tego w przeglądarce, gdyby to był okaleczający występ z przodu.
Myślę, że’S wielkie podejście. Reaguj jako silnik szablonów po stronie serwera. Wanilia JS do interakcji i manipulacji DOM w przeglądarce.
Ta strona początkowo zawierała 300 kb JavaScript, z których niektóre były reagujące, a inne kod po stronie klienta (takie jak biblioteki narzędzi, takie jak Lodash), a niektóre z nich były dane kontekstowe wymagane do nawadniania React’stan s.
300 kB JS! Yikes!
Niezależnie od tego’Wspaniale jest zobaczyć dużą firmę, taką jak Netflix, skakał do wanilii JS. Aby zagłębić się w to, jak to zrobili, przeczytaj Addy’artykuł.
�� Sprzedaż flash! Tylko w tym tygodniu uzyskaj 50% zniżki na każdy kurs JavaScript i ebook. Dowiedz się więcej w VanillaJsguides.com.
Nienawidzę złożoności nowoczesnego rozwoju stron internetowych? Każdego dnia wysyłam krótki e -mail na temat tego, jak zbudować prostszą, bardziej odporną sieć. Dołącz do ponad 14 000 innych.
Wykonane z ❤️ w Massachusetts. O ile nie zaznaczono inaczej, cały kod może korzystać z licencji MIT. Bardzo nieregularnie dzielę się również niekodującymi przemyśleniami.
Tworzenie wysokowydajnego interfejsu użytkownika telewizora za pomocą React
Interfejs telewizyjny Netflix stale się rozwija, gdy staramy się znaleźć najlepsze wrażenia dla naszych członków. Na przykład po testowaniu A/B, śledzeniu wzroku i opinii klientów niedawno wprowadziliśmy podgląd wideo, aby pomóc członkom podejmować lepsze decyzje dotyczące tego, co obejrzeć. My’Napisane wcześniej o tym, jak nasza aplikacja telewizyjna składa się z zestawu SDK zainstalowanego natywnie na urządzeniu, aplikacji JavaScript, która może być aktualizowana w dowolnym momencie, oraz warstwę renderowania znaną jako Gibbon. W tym poście my’Podkreśla niektóre ze strategii, które my’Zastosowano po drodze do zoptymalizowania naszej wydajności aplikacji JavaScript.
React-Gibbon
W 2015 roku rozpoczęliśmy hurtową przepisanie i modernizację naszej architektury interfejsu telewizyjnego. Postanowiliśmy użyć React, ponieważ jego jednokierunkowe przepływ danych i deklaratywne podejście do rozwoju interfejsu użytkownika ułatwiają rozumowanie naszej aplikacji. Oczywiście my’d potrzebuje naszego własnego smaku react, ponieważ w tym czasie celował tylko w DOM. Byliśmy w stanie stworzyć prototyp, który dość szybko ukierunkował Gibbon. Ten prototyp ostatecznie przekształcił się w react-gibbon i zaczęliśmy pracować nad budowaniem naszego nowego interfejsu użytkownika opartego na react.
React-Gibbon’S API byłby bardzo znany każdemu, kto pracował z React-Dom. Podstawowa różnica polega na tym, że zamiast Div, rozpiętości, wejścia itp “Widżet” Rysowanie prymitywne, które obsługuje stylistykę.
Reagować.createClass (render () return> />;
>
>);
Wydajność jest kluczowym wyzwaniem
Nasza aplikacja działa na setkach różnych urządzeń, od najnowszych konsol do gier, takich jak PS4 Pro, po budżetowe urządzenia elektroniczne Consumer o ograniczonej pamięci i mocy obliczeniowej. Maszyny o niskiej jakości, które kierujemy, mogą często mieć pod jednym rdzeniem procesory, niskie pamięć i ograniczone przyspieszenie graficzne. Aby było jeszcze bardziej trudne, nasze środowisko JavaScript to starsza wersja JavaScriptCore nie-JIT. Ograniczenia te sprawiają, że super responsywne doświadczenia 60 fps są szczególnie trudne i napędzają wiele różnic między react-gibbon.
Zmierzyć, mierzyć, mierzyć
Podczas zbliżania się do optymalizacji wydajności’jest ważne, aby najpierw zidentyfikować wskaźniki, których użyjesz do pomiaru sukcesu swoich wysiłków. Używamy następujących wskaźników do oceny ogólnej wydajności aplikacji:
- Klucz reaktywność wejściowa – czas potrzebny na zmianę zmiany w odpowiedzi na naciśnięcie klawisza
- Czas na interaktywność – czas na uruchomienie aplikacji
- Ramy na sekundę – konsystencja i gładkość naszych animacji
- Zużycie pamięci
Strategie przedstawione poniżej mają na celu poprawę kluczowej reakcji wejściowej. Wszystkie zostały zidentyfikowane, testowane i mierzone na naszych urządzeniach i niekoniecznie mają zastosowanie w innych środowiskach. Jak w przypadku wszystkich “najlepsze praktyki” sugestie Ważne jest, aby być sceptycznym i sprawdzić, czy działają w twoim środowisku i dla twojego przypadku użycia. Zaczęliśmy od korzystania z narzędzi profilowania, aby określić, jakie ścieżki kodu wykonują i jaki był ich udział w całkowitym czasie renderowania; To doprowadziło nas do kilku interesujących obserwacji.
Obserwacja: React.tworzenie ma koszt
Kiedy Babel przenosi jsx, przekształca go w wiele reakcji.Utwórz wywołania funkcji, które po ocenie tworzą opis następnego komponentu, który należy renderować. Jeśli możemy przewidzieć, co wytworzy funkcja CreateElement, możemy podnosić połączenie z oczekiwanym wynikiem w czasie budowy, a nie w czasie wykonywania.
// JSX
render () return;
>// Transpiled
render () return React.UtwórzElement (MyComponent, < key: 'mykey', prop1: 'foo', prop2: 'bar' >);
>// z inlinacją
render () return typ: mycomponent,
rekwizyty: Prop1: „Foo”,
Prop2: „Bar”
>,
Klucz: „mykey”
>;
>
Jak widać, całkowicie usunęliśmy koszt połączenia CreateElement, triumf dla “Czy możemy po prostu nie?” School of Software Optymalizacja.
Zastanawialiśmy się, czy możliwe byłoby zastosowanie tej techniki w całej naszej aplikacji i unikanie połączenia COMUNEELEment. Odkryliśmy, że jeśli użyliśmy sędziego w naszych elementach, należy wywołać CreateElement, aby podłączyć właściciela w czasie wykonywania. Dotyczy to również, jeśli ty’ponowne za pomocą operatora spreadu, który może zawierać wartość ref (my’Wróć do tego później).
Używamy niestandardowej wtyczki Babel do inlinowania elementów, ale istnieje oficjalna wtyczka, której można teraz użyć. Zamiast tego obiektem, oficjalna wtyczka emituje wywołanie funkcji pomocnika, która może zniknąć dzięki magii funkcji V8. Po nałożeniu naszej wtyczki wciąż było sporo komponentów’T będąc powołanym, szczególnie komponentami wyższego rzędu, które stanowią przyzwoity udział w całkowitej liczbie komponentów renderowanych w naszej aplikacji.
Problem: komponenty wyższego rzędu mogą’t Użyj inlinowania
Uwielbiamy komponenty wyższego rzędu (HOC) jako alternatywę dla miksinów. HOC ułatwia warstwa zachowania przy jednoczesnym zachowaniu rozdzielenia obaw. Chcieliśmy skorzystać z inlinowania w naszych hocs, ale wpadliśmy na problem: hoc zwykle działają jako przejście dla swoich rekwizytów. To naturalnie prowadzi do użycia operatora rozprzestrzeniania się, co zapobiega wtyczce Babel do inline.
Kiedy rozpoczęliśmy proces przepisywania naszej aplikacji, zdecydowaliśmy, że wszystkie interakcje z warstwą renderowania przejdą przez deklaratywne interfejsy API. Na przykład zamiast robić:
componentDidmount () to.Ref.SomeWidget.centrum()
>
Aby przenieść ostrość aplikacji do konkretnego widżetu, zamiast tego wdrożyliśmy deklaratywny interfejs API, który pozwala nam opisać, co należy skupić podczas renderowania:
render () return />;
>
Miał to szczęśliwy efekt uboczny pozwalania nam uniknąć korzystania z Refs w całym aplikacji. W rezultacie mogliśmy zastosować inlinowanie, niezależnie od tego, czy kod użył spreadu, czy nie.
// przed inlinowaniem
render () return />;
>// po inlinowaniu
render () return typ: mycomponent,
Rekwizyty: to.rekwizyty
>;
>
To znacznie zmniejszyło ilość połączeń funkcyjnych i łączenia właściwości, które wcześniej musieliśmy zrobić, ale nie wyeliminowało tego całkowicie.
Problem: przechwycenie właściwości nadal wymaga scalania
Po tym, jak udało nam się wprowadzić nasze komponenty, nasza aplikacja wciąż spędzała dużo czasu na łączeniu właściwości w naszych hocach. Nie było to zaskakujące, ponieważ HOC często przechwytują przychodzące rekwizyty, aby dodać własne lub zmienić wartość konkretnego rekwizytu przed przekazaniem na komponent owinięty.
Przeprowadziliśmy analizę, w jaki sposób stosy HOC skalowane z liczbą rekwizytów i głębokością komponentu na jednym z naszych urządzeń, a wyniki były pouczające.
Wykazali, że istnieje z grubsza liniowa zależność między liczbą rekwizytów poruszających się przez stos a czasem renderowania dla danej głębokości komponentu.
Śmierć przez tysiąc rekwizytów
W oparciu o nasze ustalenia zdaliśmy sobie sprawę, że możemy znacznie poprawić wydajność naszej aplikacji, ograniczając liczbę rekwizytów przekazywanych przez stos. Stwierdziliśmy, że grupy rekwizytów były często powiązane i zawsze zmieniane w tym samym czasie. W takich przypadkach sensowne było grupowanie tych powiązanych rekwizytów pod jednym “Przestrzeń nazw” rekwizyt. Jeśli rekwizyt przestrzeni nazw może być modelowany jako niezmienna wartość, kolejne połączenia powinny powinno być zoptymalizowane podawania, sprawdzając równość referencyjne. To dało nam kilka dobrych zwycięstw, ale w końcu stwierdziliśmy, że zmniejszyliśmy liczbę rekwizytów tak bardzo, jak to możliwe. Nadszedł czas, aby uciekać się do bardziej ekstremalnych środków.
Scalanie rekwizytów bez kluczowej iteracji
Ostrzeżenie, oto smoki! Nie jest to zalecane i najprawdopodobniej złamie wiele rzeczy w dziwny i nieoczekiwany sposób.
Po zmniejszeniu rekwizytów poruszających się przez naszą aplikację eksperymentowaliśmy z innymi sposobami skrócenia czasu spędzonego w połączeniu rekwizytów między hocs. Zdaliśmy sobie sprawę, że możemy użyć łańcucha prototypowego, aby osiągnąć te same cele, jednocześnie unikając kluczowej iteracji.
// Przed Proto scal się
render () const newProps = obiekt.przypisać (<>, to.rekwizyty, < prop1: ‘foo’ >)
return />;
>// po Proto Scal
render () const newProps = < prop1: ‘foo’ >;
Newprops.__proto__ = to.rekwizyty;
Typ powrotu: MyComponent,
Rekwizyty: NewProps
>;
>
W powyższym przykładzie zmniejszyliśmy liczbę głębokości 100 rekwizytów z czasu renderowania ~ 500 ms do ~ 60 ms. Doradzono, że zastosowanie tego podejścia wprowadziło kilka interesujących błędów, a mianowicie w przypadku tego, że to.rekwizyty to zamrożony obiekt . Kiedy tak się dzieje, podejście łańcuchowe prototypu działa tylko wtedy, gdy __proto__ jest przypisany po utworzeniu obiektu NewPrope. Nie trzeba dodawać, że jeśli nie jesteś właścicielem NewProps, w ogóle nie byłoby mądrze przypisać prototyp.
Problem: “Różnica” Style były powolne
Gdy React zna elementy, które muszą renderować, musi je różnić je z poprzednimi wartościami w celu ustalenia minimalnych zmian, które należy zastosować do rzeczywistych elementów DOM. Poprzez profilowanie stwierdziliśmy, że proces ten był kosztowny, szczególnie podczas montażu – częściowo ze względu na potrzebę iteracji nad dużą liczbą nieruchomości stylu.
Oddzielne rekwizyty w stylu na podstawie tego, co’prawdopodobnie się zmieni
Odkryliśmy, że często wiele wartości, które ustawiliśmy, nigdy się nie zmieniło. Na przykład powiedzmy, że mamy widżet używany do wyświetlania dynamicznej wartości tekstowej. Ma tekst właściwości, tekst, tekst i tekst tekstowy. Właściwość tekstowa zmieni się w ciągu życia tego widżetu, ale chcemy, aby pozostałe właściwości pozostały takie same. Koszt różnicowania 4 rekwizytów stylów widżetów jest wydawany na każdy render. Możemy to zmniejszyć, oddzielając rzeczy, które mogą zmienić się od rzeczy, które Don’T.
const MemoizedStyLesObject = < textSize: 20, textWeight: ‘bold’, textColor: ‘blue’ >; styl => />
Jeśli staramy się zapamiętać obiekt MemoizedStyleSObject, React-Gibbon może następnie sprawdzić równość referencyjną i odróżnić jego wartości tylko wtedy, gdy kontrola okaże się fałszem. Nie ma to żadnego wpływu na czas potrzebny na zamontowanie widżetu, ale opłaca się z każdym kolejnym renderowaniem.
Dlaczego nie uniknąć iteracji razem?
Idąc tym pomysłem, jeśli wiemy, jakie rekwizyty stylowe są ustawione na konkretnym widżecie, możemy napisać funkcję, która wykonuje tę samą pracę bez konieczności iteracji na żadnych klawiszach. Napisaliśmy niestandardową wtyczkę Babel, która przeprowadziła statyczną analizę metod renderowania komponentów. Określa, które style będą zastosowane, i buduje niestandardową funkcję różnicową, która jest następnie przymocowana do rekwizytów widżetów.
// Ta funkcja jest zapisana przez wtyczkę analizy statycznej
Funkcja __update __ (Widżet, NextProps, Prevroprops) var style = NextProps.styl,
prev_style = prevProps && Prevropops.styl; if (prev_style) var text = styl.tekst;
if (tekst !== Prev_Style.tekst) Widżet.tekst = tekst;
>
> inaczej widżet.tekst = styl.tekst;
>
>Reagować.createClass (render () return (
styl => />
);
>
>);
React-Gibbon wewnętrznie szuka obecności “specjalny” __Update__ Prop i pomijają zwykłą iterację nad poprzednimi i następnymi rekwizytami, zamiast tego zastosować właściwości bezpośrednio do widżetu, jeśli się zmieniły. Miało to ogromny wpływ na nasze czasy renderowania kosztem zwiększenia wielkości dystrybucji.
Wydajność jest funkcją
Nasze środowisko jest wyjątkowe, ale techniki, których użyliśmy do identyfikacji możliwości ulepszeń wydajności. Zmierzyliśmy, testowaliśmy i zweryfikowaliśmy wszystkie nasze zmiany na rzeczywistych urządzeniach. Te badania doprowadziły nas do odkrycia wspólnego tematu: Kluczowa iteracja była droga. W rezultacie postanowiliśmy zidentyfikować scalanie się w naszej aplikacji i ustalić, czy można je zoptymalizować. Tutaj’jest listą niektórych innych rzeczy’Wykonane w naszym dążeniu do poprawy wydajności:
- Niestandardowy komponent złożony – Hyper zoptymalizowany dla naszej platformy
- Wstępne ekrany w celu poprawy postrzeganego czasu przejścia
- Pulowanie komponentów na listach
- Zapamiętanie drogich obliczeń
Budowanie wrażenia interfejsu internetowego Netflix, które może działać na różnych urządzeniach, które obsługujemy, jest zabawnym wyzwaniem. Pielęgnujemy kulturę zorientowaną na wydajność w zespole i nieustannie staramy się poprawić doświadczenia dla wszystkich, niezależnie od tego, czy korzystają z Xbox One S, Smart TV czy Streaming Stick. Dołącz do nas, jeśli to brzmi jak twój dżem!
10 słynnych aplikacji React: przykłady (2023)
Najprawdopodobniej używasz aplikacji React codziennie, oglądając ulubione programy telewizyjne, przeglądając media społecznościowe i sprawdzając e -mail. Dowiedz się, które słynne firmy zbudowały swoje aplikacje z ReactJS i dlaczego.
16 stycznia 2023
Tl; dr
Spis treści
Przykład H2
Przykład H3
Przykład H4
Przykład H5
Przykład H6
Wstęp
Pozwalać’S stan twarzą w twarz – cyfrowy świat się zmienia, gdy mówimy. W takiej rzeczywistości zdecydowanie trudno jest dostosować się do trendów. Jednak właśnie to robią wielkie nazwy w branży.
Główne aplikacje, takie jak Facebook, Instagram, Netflix a inni stale poprawiają swoje doświadczenie i dostosowują się do nowych ram i trendów.
Niedawno krążyło wielkie usta Reactjs i jego imponujące funkcje.
Na wypadek, gdybyś nadal przystosował’nie słyszałem o potencjalnym reactjs, są one liczne. Zasadniczo React stał się bardzo popularny wśród programistów i istnieje wiele zasobów, które najwięcej z jego technicznych zalet – podobnie jak Nodejs i wiele innych powiązanych frameworków/narzędzi JavaScript JavaScript.
Dowód na jego popularność najlepiej opisać aplikacje, które używają ReactJs – a dziś pokazujemy listę najbardziej imponujących aplikacji opartych na ReactJs.
Co jest reagujące?
Aby skrócić długą historię, React to Biblioteka JavaScript do budowania interfejsów użytkownika. Bardzo często’jest źle interpretowane jako narzędzie, framework, język. Dostawcy pracujący z React są w stanie tworzyć duże aplikacje internetowe, które wykorzystują dane, które mogą się zmieniać z czasem, bez ponownego załadunku strony. Jego głównym celem jest być szybkim, prostym i skalowalnym. React przetwarza tylko interfejs użytkownika w aplikacjach.
To po prostu czas wykonawczy JavaScript. Lekkie, szybkie i nowoczesne sposób wykonywania kodu na komputerze.
Dlaczego giganci internetowi wybierają aplikacje React?
#1 Facebook
Chociaż częściowo, Facebook korzysta z ReactJS. Ich strona internetowa jest zbudowana z React, ponieważ skrypt mieszany w kodzie aplikacji. Aplikacja mobilna jest również zbudowana z wersją React o nazwie React Native, która jest podobna, chociaż odpowiedzialna za wyświetlanie natywnych komponentów iOS i Android zamiast elementów DOM.
Co ciekawe, Facebook był miejscem, w którym początkowo utworzono bibliotekę ReactJS, dlatego aplikacja jest oczywista. Facebook otworzył obecnie wersję beta całkowicie przepisanych ReactJS o nazwie React Fiber.
#2 Instagram
Zastosowanie ReactJS na Instagramie jest ogromne. Dowodem tego są liczne funkcje, w tym geolokacje, interfejsy API Google Maps, dokładność wyszukiwarki, a także tagi, które wyskakują bez hashtagów. To wszystko jest w API aplikacji – i jest naprawdę imponujące.
Instagram jest całkowicie oparty na ReactJs Biblioteka i pozwala fanom w pełni dostosować się do swoich niesamowitych funkcji.
#3 Netflix
Wersja React działa również z Netflix-szczególnie na ich platformie o nazwie Gibbon, która jest używana do urządzeń telewizyjnych o niskiej wydajności zamiast DOM używanej w przeglądarkach internetowych. Netflix opublikował nawet oficjalny post na blogu wyjaśniający, w jaki sposób biblioteka ReactJS pomaga jej prędkości startupu, wydajności czasu wykonywania, modułowości i różnych innych zalet.
Jako inżynierowie interfejsu użytkownika w stanie Netflix w poście na blogu:
Na naszą decyzję o przyjęciu React wpłynęło wiele czynników, w szczególności: 1) prędkość uruchamiania, 2) wydajność czasu wykonawczego i 3) modułowość.
#4 New York Times
Kilka miesięcy temu The New York Times zaprojektował świetny nowy projekt, który symuluje różne wygląd gwiazd na czerwonym dywanie Oscara. Oczywiście ten projekt’Interfejs S został zbudowany w React i pozwala użytkownikom filtrować galerię różnych zdjęć z 19 lat w przyjemny sposób. Ponowne wydanie tego projektu to tylko jedna z imponujących funkcji, za które możemy podziękować ReactJs.
Justin Heideman popiera te powody w swoim poście na blogu na temat NYTimes Open, stwierdzając, że:
W naszej aplikacji tworzymy lekkie, pojedynczej odpowiedzialności. Sklep jest odpowiedzialny za zarządzanie konkretnym żądaniem danych.
#5 Yahoo! Poczta
Zaskakujące (lub nie), Yahoo!’S -Mail Klient używa również React. Ponieważ Facebook jest właścicielem Yahoo! W dzisiejszych czasach jest pomysł solidnej i zjednoczonej architektury i dlatego React został włączony do jak największej liczby kawałków. Architektura, która jest specjalnie zbudowana z React jako kawałek, można tu zobaczyć – i Yahoo! Deweloperzy podsumowują to jako łatwiejsze do pracy z kodem i znacznie lepiej.
Inżynierowie pracujący na platformie pocztowej Yahoo potrzebowali wielu aktualizacji. Jak mówią w poście na blogu na Tumblr:
- Przewidywalny przepływ ~ łatwe debugowanie
- Niezależnie wdrażane komponenty
- Krótsza krzywa uczenia się
- Brak zależności od dużych bibliotek platformowych
- React implementuje jednokierunkowy reaktywny przepływ danych
- Virtual DOM umożliwia renderowanie po stronie klienta i serwera
- Kod w JavaScript
- Rozwijająca się i aktywna społeczność
#6 Khan Academy
Wiele części Khan Academy opiera się obecnie na React. Jeden z ich programistów JavaScript, Joel Burget, podzielił się swoim osobistym doświadczeniem Biblioteka ReactJS i sposób, w jaki odróżnia się od tradycyjnego kręgosłupa skrypt, którego wcześniej używali.
Oczywiście definiuje to jako godne ulepszenie i ostrożnie przechodzi przez większość ważnych cech-w tym element zmieniający się w skuteczny sposób i eliminacja niepotrzebnych ponownych renderów.
#7 WhatsApp
Chociaż przed jego oficjalnym uruchomieniem było kilka betas, WhatsApp używa ReactJS Do budowania interfejsów użytkowników z Facebooka, tak jak używa Underscore.JS i prędkość.JS jako niektóre z najbardziej wydajnych silników.
Od niedawna zupełnie nowa aplikacja internetowa WhatsApp również używała React, podobnie jak wspomniane powyżej wrażenia internetowe na Facebooku
#8 Vivaldi Browser
Jedną z technologii popularnej przeglądarki Vivaldi jest biblioteka ReactJS. Silnik, z którego korzysta ta przeglądarka ‘Migać’ i jest prawie taki sam jak Google’S Chrome, zbudowany na HTML5, ReactJS, JS, CSS3 i wielu innych silnikach.
#9 Codecademy
Od sierpnia 2014 r. Codecademy postanowił w pełni włączyć Facebook’biblioteka S. ReactJS był oczywiście jego częścią – i nadal jest jednym z kluczowych skryptów opartych na aplikacji.
Od nagłówka do menu, a nawet nawigacji, używa się ReactJS na CodeAcademy, utworzone jako logiczne rozwiązanie, które pakuje wszystkie elementy dla różnych elementów.
Według wszystkich w Codeacademy niektóre aspekty reagowania, które doceniają Skrypt jest przetestowany w bitwie, łatwy do przemyślenia, sprawia, że SEO jest łatwy i jest kompatybilny ze starszym kodem i wystarczająco elastyczny na przyszłość.
Prowokuje także budowanie społeczności i pozwala przestać martwić się o płytę kotłową.
Jak mówią w swoim poście na blogu na InfoQ:
React to lekka, potężna, przetestowana bitwy biblioteka do budowania interfejsów użytkowników z JavaScript. To’nie jest pełnym ramy, ale raczej potężne narzędzie, które może zmienić sposób podejścia do rozwoju front-end. My’stwierdzono, że jest to niezwykle przydatne narzędzie dla naszego rozwoju frontendowego, a my’bardzo zadowolony z naszego wyboru.
#10 Dropbox
Dropbox przeszedł na reakcje ponad rok temu. Właśnie w czasie, gdy React stał się bardzo popularny wśród programistów aplikacji.
Mnóstwo zasobów, które są częścią tych ram, są również efektywnie wykorzystywane przez Dropbox-szeroko przyczyniające się do sukcesu tej niesamowitej usługi przechowywania w chmurze i rozwiązania do tworzenia kopii zapasowych online.
React Apps = doskonałe wrażenia użytkownika
Ostatecznie donoszą zmniejszone ryzyko, lepsza wydajność i skuteczność ReactJS oraz wiele korzyści organizacyjnych były przyczyną wielkich nazwisk w aplikacjach do aktualizacji do ReactJS i wykorzystania niesamowitych korzyści oferowanych przez ten skrypt ten.
I chociaż każde ulepszenie ramy pobiera swoje żniwo w odniesieniu do czasu i kosztów, jest to absolutnie warte tworzenia idealnego wrażenia użytkownika – czy to w Internecie, czy w aplikacji mobilnej.
Zasoby:
- https: // yahooeng.Tumblr.COM/Post/101682875656/Evolving-Yahoo-Mail (obraz)
- https: // twitter.com/reacteuropepe/status/558097823330492416 (obraz)