요약

이 기사에서는 Netflix가 바닐라 JS로 전환하여 프론트 엔드 성능을 향상시키는 방법을 살펴볼 것입니다. 넷플릭스. 이를 통해 JavaScript 번들의 크기를 줄이고 전반적인 성능을 향상시킬 수있었습니다.

1. Netflix는 어떻게 프론트 엔드 성능을 향상 시켰습니까??

Netflix는 바닐라 JS로 전환하여 브라우저의 상호 작용 및 DOM 조작으로 프론트 엔드 성능을 향상 시켰습니다. 그들은 여전히 ​​서버 측 템플릿 엔진으로 React를 사용합니다.

2. Netflix가 바닐라 JS로 전환하기로 결정한 이유는 무엇입니까??

Netflix는 JavaScript 번들의 크기를 줄이고 전반적인 성능을 향상시키기 위해 바닐라 JS로 전환했습니다. 이 결정은 브라우저에서 React 사용의 불필요한 오버 헤드를 제거 할 수있었습니다.

삼. Netflix의 페이지가 처음에는 얼마나 많은 JavaScript를 포함 했습니까??

Netflix의 페이지는 처음에 300KB의 JavaScript를 포함하여 React 및 기타 클라이언트 측 코드를 포함하여 React의 상태를 수화시키는 데 필요한 컨텍스트 데이터.

4. 프론트 엔드 성능에 JavaScript의 크기를 줄이는 것이 왜?

브라우저가 코드를 다운로드하고 구문 분석하는 데 걸리는 시간이 줄어들 수 있기 때문에 JavaScript의 크기를 줄이는 것은 프론트 엔드 성능에 중요합니다. 더 작은 자바 스크립트 번들은로드 시간이 빨라지고 사용자 경험이 향상됩니다.

5. 서버 측 템플릿 엔진으로 React를 사용하면 어떤 이점이 있습니까??

서버 측 템플릿 엔진으로 React를 사용하면 서버에서 HTML의 동적 렌더링이 가능하여 성능과 SEO를 향상시킬 수 있습니다. 또한 서버와 클라이언트 간의 코드 재사용도 가능합니다.

6. Netflix의 바닐라 JS로의 전환이 프론트 엔드 성능에 어떤 영향을 미쳤습니까??

Netflix의 바닐라 JS 로의 전환 스위치는 프론트 엔드 성능을 크게 향상 시켰습니다. 브라우저에서 React의 오버 헤드를 제거하면 JavaScript 번들 크기를 줄이고로드 시간을 개선 할 수있었습니다.

7. Netflix가 프론트 엔드 성능을 향상시키기 위해 어떤 접근 방식을 취 했습니까??

Netflix는 브라우저의 상호 작용 및 DOM 조작을 위해 서버 측 템플릿 엔진 및 바닐라 JS로 반응을 사용했습니다. 이 접근법은 성능과 유지 가능성의 균형을 유지할 수있게 해주었다.

8. JavaScript 번들의 크기를 줄이는 방법은 사용자에게 도움이 될 수 있습니다?

JavaScript 번들의 크기를 줄이면 페이지로드 시간을 개선하고 데이터 사용량을 줄이고 더 부드러운 탐색 경험을 제공함으로써 사용자에게 도움이 될 수 있습니다.

9. 바닐라 JS로 전환하기로 한 Netflix의 결정의 중요성은 무엇입니까??

바닐라 JS로 전환하기로 한 Netflix의 결정은 대기업의 경우에도 프론트 엔드 성능을 최적화하는 것의 중요성을 보여줍니다. 자체 웹 애플리케이션을 개선하려는 다른 개발자 및 조직의 예를 설정합니다.

10. 개발자가 Netflix의 프론트 엔드 성능 향상에서 배울 수있는 것?

개발자는 더 나은 프론트 엔드 성능을 위해 JavaScript 코드를 평가하고 최적화하는 것의 중요성을 배울 수 있습니다. 또한 React와 같은 프레임 워크와 함께 서버 측 렌더링을 사용하여 성능 및 사용자 경험을 향상시키는 것을 고려할 수 있습니다.

11. 서버 측 템플릿 엔진 혜택 SEO로 React를 어떻게 사용합니까??

서버 측 템플릿 엔진으로 React를 사용하면 서버에서 HTML의 동적 렌더링이 가능하므로 JavaScript 실행에 의존하지 않고 완전히 렌더링 된 콘텐츠를 검색 엔진에 제공하여 SEO를 향상시킬 수 있습니다.

12. Netflix가 프론트 엔드 스택에서 사용한 다른 기술?

이 기사는 특정 기술을 언급하지 않지만 프론트 엔드 상호 작용 및 DOM 조작을 위해 바닐라 JS 로의 스위치를 강조합니다. Netflix가 프론트 엔드 스택에 다른 도구와 라이브러리를 사용했을 가능성이 있습니다.

13. 개발자가 프론트 엔드 성능을 어떻게 측정 할 수 있습니까??

개발자는 Lighthouse, WebPagetest 및 Chrome DevTools와 같은 도구를 사용하여 프론트 엔드 성능을 측정 할 수 있습니다. 이 도구는 페이지로드 시간, 자산 크기 및 네트워크 활동과 같은 메트릭에 대한 통찰력을 제공합니다.

14. 프론트 엔드 개발에 바닐라 JS를 사용하는 장점은 무엇입니까??

프론트 엔드 개발을 위해 바닐라 JS를 사용하면로드 시간이 빠르고, 번들 크기를 줄이고, 성능 향상 및 코드베이스에 대한 제어력이 높아질 수 있습니다. 또한 React와 같은 프레임 워크에 의해 도입 된 추가 종속성과 오버 헤드가 필요하지 않습니다.

15. 개발자가 더 나은 성능을 위해 JavaScript 코드를 최적화 할 수있는 방법?

개발자는이를 미들어 내고 압축하고 불필요한 종속성을 줄이고, 게으른로드 코드를 줄이고, 코드 분할 및 캐싱과 같은 기술을 사용하여 JavaScript 코드를 최적화 할 수 있습니다. 또한 중요한 렌더링 경로의 우선 순위를 정하고 렌더 블로킹 리소스를 최소화 할 수 있습니다.

Netflix가 바닐라 JS로 전환하여 프론트 엔드 성능을 극적으로 향상시키는 방법

React 및 TMDB API를 사용하여 단순한 Netflix 클론 영화/TV 쇼를 시작합니다

넷플릭스

REACT, NEXTJS, TAILWINDCSS, PRISMA 및 MONGODB와 함께 전체 스택 Netflix 클론

REACT, NEXTJS, TAILWINDCSS, PRISMA 및 MONGODB와 함께 전체 스택 Netflix 클론

2023 년 5 월 3 일

넷플릭스 랜딩 페이지 복제 반응.JS

넷플릭스 랜딩 페이지 복제 반응.JS

2023 년 4 월 27 일

Nextjs와 함께 Fullstack Netflix 클론 프로젝트

Nextjs와 함께 Fullstack Netflix 클론 프로젝트

2023 년 4 월 6 일

Nextjs 및 Tailwind CSS와 Fullstack Netflix 클론

Nextjs 및 Tailwind CSS와 Fullstack Netflix 클론

2023 년 3 월 18 일

Netflix 클론은 반응 및 Vite를 사용하여 만든 클론

Netflix 클론은 반응 및 Vite를 사용하여 만든 클론

2022 년 11 월 1 일

Reactjs, TMDB API, Firebase를 사용한 Netflix 클론

Reactjs, TMDB API, Firebase를 사용한 Netflix 클론

2022 년 10 월 2 일

Reactjs 및 순수한 CSS로 만든 Netflix UI 클론

Reactjs 및 순수한 CSS로 만든 Netflix UI 클론

2022 년 9 월 7 일

React를 사용한 Netflix Clone 웹 사이트

React를 사용한 Netflix Clone 웹 사이트

2022 년 8 월 29 일

React18, TypeScript, Material UI 및 TMDB API를 사용한 Netflix 클론

React18, TypeScript, Material UI 및 TMDB API를 사용한 Netflix 클론

2022 년 8 월 22 일

React 및 CSS로 만든 Netflix의 단순화 된 프론트 엔드 클론

React 및 CSS로 만든 Netflix의 단순화 된 프론트 엔드 클론

2022 년 8 월 1 일

React JS를 사용한 Netflix 클론

React JS를 사용한 Netflix 클론

2022 년 7 월 12 일

React JS 및 Firebase와 Netflix 클론

React JS 및 Firebase와 Netflix 클론

2022 년 7 월 6 일

React-Player 플러그인을 기반으로 Netflix 스타일의 고급 비디오 플레이어

React-Player, TypeScript 및 Styled Components로 Netflix 비디오 플레이어를 만듭니다.

2022 년 6 월 30 일

Netflix Clone은 다음으로 제작되었습니다.JS 및 Tailwind CSS

Netflix Clone은 다음으로 제작되었습니다.JS 및 Tailwind CSS

2022 년 6 월 10 일

Reactjs로 제작 된 Netflix 클론

Reactjs로 제작 된 Netflix 클론

2022 년 5 월 3 일

REACT, HTML, CSS로 만든 Netflix 클론

REACT, HTML, CSS로 만든 Netflix 클론

2022 년 3 월 17 일

React, Firebase, Firestore 및 스타일 구성 요소를 사용하여 만든 Netflix 클론

React, Firebase, Firestore 및 스타일 구성 요소를 사용하여 만든 Netflix 클론

2022 년 2 월 26 일

Reactjs를 사용하여 간단한 Netflix 클론

Reactjs를 사용하여 간단한 Netflix 클론

2022 년 2 월 17 일

React를 사용하여 구축 된 Netflix 클론

React를 사용하여 구축 된 Netflix 클론

2022 년 2 월 3 일

Netflix UI 연구 목적으로 Reactjs와 클론

Netflix UI 연구 목적으로 Reactjs와 클론

2022 년 1 월 27 일

Netflix 클론은 React를 사용하여 생성되었습니다.JS

Netflix 클론은 React를 사용하여 생성되었습니다.JS

2022 년 1 월 21 일

REACTJS를 사용하여 간단히 Netflix 클론. TMDB API의 데이터를 가져옵니다

REACTJS를 사용하여 간단히 Netflix 클론. TMDB API의 데이터를 가져옵니다

2021 년 12 월 26 일

Astra DB 및 GraphQL을 사용한 간단한 Reactjs Netflix 홈페이지 클론

Astra DB 및 GraphQL을 사용한 간단한 Reactjs Netflix 홈페이지 클론

2021 년 12 월 21 일

React+TypeScript로 만든 Netflix 클론 애플리케이션

React+TypeScript로 만든 Netflix 클론 애플리케이션

2021 년 12 월 15 일

React Native 및 AWS Amplify를 사용한 Full Stack Netflix 앱 클론

React Native 및 AWS Amplify를 사용한 Full Stack Netflix 앱 클론

2021 년 11 월 28 일

React로 구축 된 Netflix 샘플 프로젝트

React로 구축 된 Netflix 샘플 프로젝트

2021 년 11 월 27 일

React 및 TMDB API를 사용하여 단순한 Netflix 클론 영화/TV 쇼를 시작합니다

React 및 TMDB API를 사용하여 단순한 Netflix 클론 영화/TV 쇼를 시작합니다

2021 년 11 월 17 일

React JS를 사용한 Netflix 홈페이지 클론

React JS를 사용한 Netflix 홈페이지 클론

2021 년 11 월 15 일

React 및 TMDB API를 사용하여 단순한 Netflix 클론 영화/TV 쇼를 시작합니다

React 및 TMDB API를 사용하여 단순한 Netflix 클론 영화/TV 쇼를 시작합니다. 프론트 엔드에 재료 UI를 사용합니다.

2021 년 11 월 15 일

Netflix 복제의 메인 페이지는 React를 사용하여 구축되었습니다

Netflix 복제의 메인 페이지는 React를 사용하여 구축되었습니다

2021 년 11 월 8 일

React JS로 제작되고 Firebase로 인증 된 Netflix Clone

React JS로 제작되고 Firebase로 인증 된 Netflix Clone

Netflix가 바닐라 JS로 전환하여 프론트 엔드 성능을 극적으로 향상시키는 방법

넷플릭스는했다’t 완전히 반응합니다. 그들은 여전히 ​​서버에서 그것을 사용하여 초기 HTML을 만듭니다.

그러나 그들은 브라우저에서 그것을 제거했습니다.

내 생각에는’훌륭한 접근 방식입니다. 서버 측 템플릿 엔진으로 반응합니다. 브라우저의 상호 작용 및 DOM 조작을위한 바닐라 JS.

이 페이지에는 처음에는 300KB의 JavaScript가 포함되어 있으며 그 중 일부는 React 및 기타 클라이언트 측 코드 (예 : Lodash와 같은 유틸리티 라이브러리) 및 그 중 일부는 React 수화에 필요한 컨텍스트 데이터였습니다’s 상태.

300KB의 JS! Yikes!

그럼에도 불구하고’Netflix와 같은 대기업이 바닐라 JS로 점프하는 것을 보는 것이 좋습니다. 그들이 어떻게했는지에 대한 끔찍한 멍청한 것을 파헤치려면 Addy를 읽으십시오’S 기사.

�� 플래시 판매! 이번 주에만, 모든 JavaScript 코스 및 eBook 50% 할인. Vanillajsguides에서 자세히 알아보십시오.com.

현대적인 프론트 엔드 웹 개발의 복잡성을 미워하십시오? 나는 매주 매일 짧은 이메일을 보낸다. 14K가 넘는 다른 사람들에 가입하십시오.

매사추세츠 주에서 ❤️로 제작되었습니다. 달리 명시되지 않는 한, 모든 코드는 MIT 라이센스에 따라 자유롭게 사용할 수 있습니다. 나는 또한 비 코딩 생각을 매우 불규칙적으로 공유합니다.

React를 사용하여 고성능 TV 사용자 인터페이스를 제작합니다

Netflix TV 인터페이스는 회원들에게 최고의 경험을 알아 내기 위해 노력하면서 끊임없이 발전하고 있습니다. 예를 들어, A/B 테스트, 시선 추적 연구 및 고객 피드백 후에 최근에 비디오 미리보기를 출시하여 회원이 볼 내용에 대한 더 나은 결정을 내릴 수 있도록했습니다. 우리’TV 응용 프로그램이 장치에 기본적으로 설치된 SDK, 언제든지 업데이트 할 수있는 JavaScript 응용 프로그램 및 Gibbon으로 알려진 렌더링 레이어에 대해 이전에 작성했습니다. 이 게시물에서 우리는’LL 우리는 우리가 전략을 강조합니다’JavaScript 응용 프로그램 성능을 최적화하기 위해 VE.

반응-기본

2015 년에 우리는 TV UI 아키텍처의 도매 재 작성 및 현대화를 시작했습니다. 우리는 일방 통행 데이터 흐름과 UI 개발에 대한 선언적 접근 방식이 앱에 대해 쉽게 추론하기 때문에 React를 사용하기로 결정했습니다. 분명히, 우리’d 그 당시에는 DOM을 목표로했기 때문에 우리 자신의 반응의 맛이 필요합니다. 우리는 Gibbon을 매우 빠르게 목표로하는 프로토 타입을 만들 수있었습니다. 이 프로토 타입은 결국 React-Gibbon으로 진화했으며 우리는 새로운 React 기반 UI를 구축하기 시작했습니다.

반응-기본’S API는 React-Dom과 함께 일한 사람에게 매우 친숙 할 것입니다. 주요 차이점은 div, 스팬, 입력 등 대신에 단일이 있다는 것입니다 “위젯” 인라인 스타일을 지원하는 원시를 그리기.

반응.CreateClass (render () return> />; 
>
>);

성능은 핵심 도전입니다

당사의 앱은 PS4 Pro와 같은 최신 게임 콘솔에서 메모리 및 처리 전력이 제한된 예산 소비자 전자 장치에 이르기까지 수백 가지의 다른 장치에서 실행됩니다. 우리가 타겟팅하는 저가형 기계는 종종 서브 GHZ 단일 코어 CPU, 낮은 메모리 및 제한된 그래픽 가속도를 가질 수 있습니다. 일을 더욱 도전적으로 만들기 위해 JavaScript 환경은 JavaScriptCore의 이전 비 JIT 버전입니다. 이러한 제한은 매우 반응 형 60fps 경험을 특히 까다 롭게 만들고 React-Gibbon과 React-Dom의 많은 차이점을 유도합니다.

측정, 측정, 측정

성능 최적화에 접근 할 때’먼저 노력의 성공을 측정하는 데 사용할 메트릭을 먼저 식별하는 것이 중요합니다. 다음 메트릭을 사용하여 전반적인 응용 프로그램 성능을 측정합니다

  • 주요 입력 응답 성 – 키 프레스에 대한 응답으로 변경하는 데 걸리는 시간
  • 상호 작용 시간 – 앱을 시작할 시간
  • 초당 프레임 – 애니메이션의 일관성과 부드러움
  • 메모리 사용

아래에 요약 된 전략은 주로 주요 입력 응답 성 향상을 목표로합니다. 그것들은 모두 우리의 장치에서 식별, 테스트 및 측정되었으며 다른 환경에서 반드시 적용 할 수는 없습니다. 모두와 마찬가지로 “모범 사례” 제안 회의적이며 환경에서 일하고 유스 케이스에서 일하는지 확인하는 것이 중요합니다. 우리는 프로파일 링 도구를 사용하여 어떤 코드 경로가 실행 중인지, 총 렌더링 시간의 일부가 무엇인지 식별하여 시작했습니다. 이것은 우리를 흥미로운 관찰로 이끌었습니다.

관찰 : 반응.CreateElement에는 비용이 있습니다

Babel이 JSX를 트랜스 핑 할 때 여러 React로 변환합니다.평가할 때 렌더링 할 다음 구성 요소에 대한 설명을 생성하는 CreateElement 기능 호출. CreateElement 함수가 생성 할 내용을 예측할 수 있다면 런타임이 아닌 빌드 시간에 예상 결과로 통화를 인화 할 수 있습니다.

// JSX
렌더 () 반환;
>
// 변환
렌더링 () 반응 반응.CreateElement (MyComponent, < key: 'mykey', prop1: 'foo', prop2: 'bar' >);
>
// 인라인과 함께
렌더 () 반환 유형 : 마이 콤포미터,
소품 : prop1 : 'foo',
prop2 : 'bar'
>,
키 : 'Mykey'
>;
>

보시다시피 우리는 CreateElement Call의 비용을 완전히 제거했습니다 &ldquo;우리는 그냥 할 수 없어?&rdquo; 소프트웨어 최적화 학교.

우리는 전체 응용 프로그램 에이 기술을 적용하고 CreateElement에 전적으로 전화를 걸지 않을 수 있는지 궁금했습니다. 우리가 찾은 것은 우리가 요소에 심판을 사용하면 런타임에 소유자를 연결하려면 CreateElement를 호출해야한다는 것입니다. 이것은 또한 당신의 경우에도 적용됩니다&rsquo;Ref 값을 포함 할 수있는 스프레드 연산자를 사용하여&rsquo;나중에 이것으로 돌아 오세요).

요소 인라인에 맞춤형 바벨 플러그인을 사용하지만 지금 사용할 수있는 공식 플러그인이 있습니다. 공식 플러그인은 객체 문자 그대로 대신 V8 기능의 마법 덕분에 사라질 수있는 도우미 기능을 호출 할 것입니다. 플러그인을 적용한 후에도 여전히 몇 가지 구성 요소가있었습니다&rsquo;t 우리 앱에서 렌더링되는 총 구성 요소의 괜찮은 점유율을 차지하는 고차계 구성 요소가 인쇄되어 있습니다.

문제 : 고차 구성 요소가 가능합니다&rsquo;t inlining을 사용하십시오

우리는 Mixins의 대안으로 고차원 (HOC)을 좋아합니다. HOC는 우려의 분리를 유지하면서 동작을 쉽게 계층화 할 수 있도록합니다. 우리는 우리의 hocs에서 인라인을 이용하고 싶었지만 우리는 문제를 일으켰습니다. 이것은 자연스럽게 스프레드 연산자를 사용하여 바벨 플러그인이 인라인으로 표시되는 것을 방지합니다.

우리가 앱을 다시 작성하는 프로세스를 시작했을 때, 우리는 렌더링 레이어와의 모든 상호 작용이 선언적 API를 통과 할 것이라고 결정했습니다. 예를 들어, 수행하는 대신 :

componentDidMount () this.참조.일부 예산.집중하다()
>

응용 프로그램 초점을 특정 위젯으로 이동시키기 위해 대신 렌더링 중에 집중해야 할 사항을 설명 할 수있는 선언적 초점 API를 구현했습니다

렌더 () return />;
>

이것은 우리가 응용 프로그램 전체에서 심판의 사용을 피할 수 있도록 운이 좋은 부작용을 가졌다. 결과적으로 코드가 스프레드를 사용했는지 여부에 관계없이 인라인을 적용 할 수있었습니다.

// 인화하기 전에
렌더 () return />;
>
// 인라인 후
렌더 () 반환 유형 : 마이 콤포미터,
소품 : 이것.소품
>;
>

이것은 우리가 이전에해야했던 기능 호출의 양과 속성 병합의 양을 크게 줄 였지만 완전히 제거하지는 못했습니다.

문제 : 속성 차단에는 여전히 병합이 필요합니다

우리가 구성 요소를 인화 할 수있게 된 후에, 우리의 앱은 여전히 ​​우리의 HOC 내부에 속성을 병합하는 데 많은 시간을 소비하고있었습니다. HOCS는 종종 포장 된 구성 요소로 전달하기 전에 자신의 소품을 추가하거나 특정 소품의 값을 변경하기 위해 종종 들어오는 소품을 가로 채기 때문에 놀라운 일이 아닙니다.

우리는 기기 중 하나에 대한 소품 수와 구성 요소 깊이로 HOC의 스택을 어떻게 확장했는지 분석했으며 결과는 유익했습니다.

그들은 스택을 통해 이동하는 소품 수와 주어진 구성 요소 깊이의 렌더링 시간 사이에 대략 선형 관계가 있음을 보여주었습니다.

수천 개의 소품에 의한 죽음

연구 결과를 바탕으로 스택을 통해 전달 된 소품 수를 제한하여 앱의 성능을 크게 향상시킬 수 있음을 깨달았습니다. 우리는 소품 그룹이 종종 관련되어 있고 동시에 항상 바뀌 었다는 것을 알았습니다. 이 경우 관련 소품을 단일로 그룹화하는 것이 합리적이었습니다 &ldquo;네임 스페이스&rdquo; 소품. 네임 스페이스 소품을 불변의 값으로 모델링 할 수있는 경우, DepcomponentUpdate 호출에 대한 후속 호출은 깊은 비교를 수행하지 않고 참조 평등을 확인하여 더 최적화 할 수 있습니다. 이것은 우리에게 좋은 승리를 주었지만 결국 우리는 우리가 가능한 한 소품 수를 줄 였다는 것을 알았습니다. 이제 더 극단적 인 조치에 의지 할 시간이었습니다.

키 반복없이 소품을 병합합니다

경고, 여기 드래곤이 있습니다! 이것은 권장되지 않으며 대부분 이상하고 예기치 않은 방식으로 많은 것들을 깨뜨릴 것입니다.

앱을 통해 움직이는 소품을 줄인 후 우리는 HOC 사이에 소품을 병합하는 데 소요되는 시간을 줄이는 다른 방법을 실험하고있었습니다. 우리는 프로토 타입 체인을 사용하여 키 반복을 피하면서 동일한 목표를 달성 할 수 있음을 깨달았습니다.

// 프로토 병합 전에
render () const newProps = 객체입니다.할당 (<>, 이것.소품, < prop1: &lsquo;foo&rsquo; >))
반환 />;
>
// 프로토 병합 후
렌더 () const newProps = < prop1: &lsquo;foo&rsquo; >;
NewProps.__proto__ = 이것.소품;
반환 유형 : MyComponent,
소품 : NewProps
>;
>

위의 예에서는 100 깊이 100 소품 케이스를 렌더링 시간에서 ~ 500ms에서 ~ 60ms로 줄였습니다. 이 접근법을 사용 하여이 접근법을 사용하여 흥미로운 버그, 즉.소품은 얼어 붙은 물체입니다 . 이런 일이 발생하면 프로토 타입 체인 접근 방식은 NewProps 객체가 생성 된 후 __proto__가 할당 된 경우에만 작동합니다. 말할 것도없이, 당신이 NewProps의 소유자가 아니라면 프로토 타입을 전혀 할당하는 것이 현명하지 않을 것입니다.

문제: &ldquo;차이&rdquo; 스타일은 느 렸습니다

React는 실제 DOM 요소에 적용되어야하는 최소 변경 사항을 결정하기 위해 이전 값과 차이를 렌더링 해야하는 요소를 알고 있으면 이전 값과 차이가 있어야합니다. 프로파일 링을 통해이 과정은 특히 산 동안 비용이 많이 들었다는 것을 알았습니다. 부분적으로 많은 스타일 속성을 반복해야하기 때문입니다.

무엇을 기반으로 스타일 소품을 분리하십시오&rsquo;변할 가능성이 높습니다

우리는 종종 우리가 설정하고있는 많은 스타일 값이 실제로 변하지 않았다는 것을 알았습니다. 예를 들어, 동적 텍스트 값을 표시하는 데 사용되는 위젯이 있다고 가정합니다. 속성 텍스트, 텍스트, 텍스트 중량 및 TextColor가 있습니다. 텍스트 속성은이 위젯의 ​​수명 동안 변경되지만 나머지 속성이 동일하게 유지되기를 원합니다. 4 개의 위젯 스타일 소품을 차별하는 비용은 각각의 렌더링에 소비됩니다. 우리는 Don이있는 것들로부터 변화 할 수있는 것들을 분리하여 이것을 줄일 수 있습니다&rsquo;티.

const memoizedstylesobject = < textSize: 20, textWeight: &lsquo;bold&rsquo;, textColor: &lsquo;blue&rsquo; >; 스타일 => />

MemoizedStylesObject 객체를 메모 화하는 데주의를 기울이면 React-Gibbon. 이것은 위젯을 장착하는 데 걸리는 시간에는 영향을 미치지 않지만 모든 후속 렌더링에 지불합니다.

반복을 모두 피하지 않겠습니까??

이 아이디어를 더 취하면 특정 위젯에서 어떤 스타일 소품이 설정되어 있는지 알면 키를 반복하지 않고도 동일한 작업을 수행하는 기능을 작성할 수 있습니다. 구성 요소 렌더링 방법에 대한 정적 분석을 수행하는 사용자 정의 Babel 플러그인을 작성했습니다. 어떤 스타일이 적용될 것인지 결정하고 사용자 정의 Diff and-Apply 함수를 작성하여 위젯 소품에 연결됩니다.

//이 기능은 정적 분석 플러그인에 의해 작성됩니다
함수 __update __ (위젯, NextProps, PrevProps) var style = NextProps.스타일,
prev_style = prebprops && prevprops.스타일;
if (prev_style) var text = style.텍스트;
if (텍스트 !== prev_style.텍스트) 위젯.텍스트 = 텍스트;
>
> 다른 위젯.텍스트 = 스타일.텍스트;
>
>
반응.CreateClass (render () return (
스타일 => />
);
>
>);

내부적으로 반응-가이본의 존재를 찾습니다 &ldquo;특별한&rdquo; __UPDATE__ PROP 및 이전 및 다음 스타일 소품에 대한 일반적인 반복을 건너 뛰면 변경된 경우 속성을 위젯에 직접 적용합니다. 이것은 분배 가능한 규모를 늘리는 비용으로 렌더링 시간에 큰 영향을 미쳤습니다.

성능은 기능입니다

우리의 환경은 독특하지만 성능 향상 기회를 식별하는 데 사용한 기술은. 실제 장치에서 모든 변경 사항을 측정, 테스트 및 검증했습니다. 그 조사로 인해 우리는 공통된 주제를 발견하게되었습니다. 키 반복은 비쌌습니다. 결과적으로 우리는 응용 프로그램에서 병합을 식별하고 최적화 할 수 있는지 여부를 결정하기 시작했습니다. 여기&rsquo;우리가 다른 것들의 목록&rsquo;성능 향상을 위해 우리의 노력으로 완료 :

  • 사용자 정의 복합 구성 요소 – 플랫폼에 최적화 된 하이퍼
  • 인식 된 전환 시간을 개선하기위한 사전 장착 화면
  • 목록의 구성 요소 풀링
  • 값 비싼 계산의 추억

우리가 지원하는 다양한 장치에서 실행할 수있는 Netflix TV UI 경험을 구축하는 것은 재미있는 도전입니다. 우리는 팀의 공연 지향 문화를 육성하고 Xbox One S, 스마트 TV 또는 스트리밍 스틱을 사용하든 모든 사람의 경험을 끊임없이 향상 시키려고 노력하고 있습니다. 잼처럼 들리면 우리와 함께 오십시오!

10 개의 유명한 반응 앱 : 예제 (2023)

가장 좋아하는 TV 쇼를보고 소셜 미디어를 탐색하고 이메일 확인. 유명한 회사가 REACTJS로 앱을 구축 한 이유를 알아 내고 이유를 알아보십시오.

2023 년 1 월 16 일

tl; dr

목차

예제 H2

예제 H3

예제 H4

예제 H5

예제 H6

소개

허락하다&rsquo;S 직면 – 디지털 세계는 우리가 말하는대로 변화하고 있습니다. 실제로 트렌드에 적응하는 것은 확실히 어렵습니다. 그러나 그것은 바로 업계의 큰 이름이하는 일입니다.

주요 앱과 같은 Facebook, Instagram, Netflix 그리고 다른 사람들은 지속적으로 그들의 경험을 향상시키고 새로운 프레임 워크와 트렌드에 적응하고 있습니다.

최근부터 주위에 큰 입소문이 있습니다 반응 그리고 인상적인 기능.

당신이 아직도 안타깝게도&rsquo;반응의 잠재력에 대해 들었을 때, 그들은 많습니다. 기본적으로 React는 개발자들 사이에서 매우 인기를 얻었으며 Nodejs 및 기타 많은 관련 JavaScript 프레임 워크/도구와 마찬가지로 기술적 인 장점을 대부분 만들 수있는 많은 리소스가 있습니다.

인기에 대한 증거는 Reactjs를 사용하는 앱에서 가장 잘 설명되어 있습니다. 오늘날 우리는 REACTJS를 기반으로하는 가장 인상적인 앱 목록을 보여드립니다.

반응이란 무엇입니까??

긴 이야기를 짧게 자르려면 React는 사용자 인터페이스 구축을위한 JavaScript 라이브러리. 매우 종종&rsquo;도구, 프레임 워크, 언어로 잘못 해석되었습니다. React와 함께 작업하는 공급 업체는 페이지를 다시로드하지 않고 시간이 지남에 따라 변경 될 수있는 데이터를 사용하는 대형 웹 응용 프로그램을 만들 수 있습니다. 주요 목표는 빠르고 단순하며 확장 가능한 것입니다. 반응 프로세스 응용 프로그램에서 사용자 인터페이스 만 프로세스합니다.

단순히 JavaScript 런타임입니다. 가볍고 빠르며 현대적입니다 컴퓨터에서 코드를 실행하는 방법.

인터넷 거인이 반응 앱을 선택하는 이유는 무엇입니까??

#1 Facebook

부분적으로, Facebook은 Reactjs를 사용하고 있습니다. 그들의 웹 페이지는 응용 프로그램 코드에 혼합 된 스크립트로 React로 구축됩니다. 모바일 앱은 또한 DOM 요소 대신 iOS 및 Android 기본 구성 요소를 표시하지만 유사한 React Native라는 React 버전으로 제작되었습니다.

흥미롭게도 페이스 북. Facebook은 현재 React Fiber라고 불리는 완전히 다시 작성된 Reactjs의 베타 버전을 열었습니다.

#2 Instagram

Instagram 내에서 Reactjs를 사용하는 것은 엄청납니다. 이에 대한 증거는 지리학, Google Maps API, 검색 엔진 정확도 및 해시 태그없이 팝업되는 태그를 포함한 수많은 기능입니다. 그것은 모두 앱의 API에 있습니다 – 정말 인상적입니다.

Instagram은 완전히 반응을 기반으로합니다 도서관과 팬들이 놀라운 기능에 완전히 적응하도록했습니다.

Instagram은 요즘 Reactjs를 사용하는 10 가지 유명한 앱 중 하나입니다

#3 Netflix

React 버전은 Netflix 와도 작동합니다. 특히 Gibbon이라는 플랫폼에서 웹 브라우저에 사용되는 DOM 대신 저성 TV 장치에 사용됩니다. Netflix는 Reactjs 라이브러리가 시작 속도, 런타임 성능, 모듈화 및 기타 다양한 장점에 어떻게 도움이되는지 설명하는 공식 블로그 게시물을 게시했습니다.

블로그 게시물에서 Netflix State의 UI 엔지니어로서 :

REACT를 채택하기로 한 우리의 결정은 다음과 같은 여러 가지 요인에 영향을 받았습니다. 1) 스타트 업 속도, 2) 런타임 성능 및 3) 모듈성.

#4 뉴욕 타임즈

몇 달 전, New York Times는 Oscar Red Carpet의 다른 스타 외모를 시뮬레이션하는 훌륭한 새로운 프로젝트를 설계했습니다. 분명히이 프로젝트&rsquo;S 인터페이스는 React로 내장되었으며 사용자가 19 년의 다른 사진 갤러리를 좋은 방법으로 필터링 할 수 있습니다. 이 프로젝트의 렌더링은 우리가 반응에 감사 할 수있는 인상적인 기능 중 하나 일뿐입니다.

Justin Heideman은 Nytimes Open의 블로그 게시물에서 이러한 이유를 뒷받침합니다

우리의 앱 내에서 우리는 경량의 단일 책임 상점을 만듭니다. 매장은 특정 데이터 요청을 관리 할 책임이 있습니다.

New York Times는 요즘 Reactjs를 사용하는 10 가지 유명한 앱 중 하나입니다

#5 야후! 우편

놀랍게도 (그렇지 않음), 야후!&rsquo;S 메일 클라이언트는 또한 React를 사용합니다. Facebook은 Yahoo를 소유하고 있습니다! 오늘날, 견고하고 통합 된 아키텍처에 대한 아이디어가 있습니다. 그래서 React가 가능한 많은 비트와 조각으로 통합되었습니다. React로 특별히 제작 된 건축물은 여기에서 볼 수 있습니다! 개발자는 코드로 작업하기가 더 쉽고 훨씬 더 나은 것으로 요약하고 있습니다.

Yahoo Mail 플랫폼에서 일하는 엔지니어는 많은 업그레이드가 필요했습니다. 그들이 Tumblr의 블로그 게시물에서 말하는 것처럼 :

  • 예측 가능한 흐름 ~ 쉬운 디버깅
  • 독립적으로 배포 가능한 구성 요소
  • 더 짧은 학습 곡선
  • 대형 플랫폼 라이브러리에 의존하지 않습니다
  • RECT는 일방 방향 반응성 데이터 흐름을 구현합니다
  • 가상 DOM을 사용하면 클라이언트 및 서버 측면 렌더링이 가능합니다
  • JavaScript의 코드
  • 성장하고 활동적인 커뮤니티

#6 칸 아카데미

칸 아카데미의 많은 부분이 현재 React를 기반으로합니다. JavaScript 개발자 중 한 명인 Joel Burget은 자신의 개인적인 경험을 공유했습니다 Reactjs 라이브러리 및 기존의 백본과 어떻게 구별되는지 이전에 사용했던 스크립트.

그는 분명히 그것을 합당한 업그레이드로 정의하고 효율적인 방식으로 변화하는 요소와 불필요한 재 렌즈의 제거를 포함하여 대부분의 중요한 기능을 신중하게 살펴 봅니다.

#7 WhatsApp

공식적으로 출시되기 전에 몇 개의 베타가 있었지만 WhatsApp은 Reactjs를 사용합니다 밑줄을 사용하는 것처럼 Facebook에서 사용자 인터페이스를 구축하기 위해.JS와 속도.JS는 가장 효율적인 엔진 중 일부입니다.

최근에 완전히 새로운 Whatsapp 웹 앱은 위에서 언급 한 Facebook 웹 경험과 마찬가지로 React를 사용하고 있습니다

#8 Vivaldi 브라우저

인기있는 Vivaldi 브라우저의 기술 중 하나는 Reactjs 라이브러리입니다. 이 브라우저가 사용중인 엔진의 이름이 지정되었습니다 &lsquo;깜박거리다&rsquo; Google과 거의 동일합니다&rsquo;S Chrome, HTML5, Reactjs, JS, CSS3 및 기타 여러 엔진에 구축 된 S Chrome.

#9 Codecademy

2014 년 8 월 현재 Codecademy는 Facebook을 완전히 통합하기로 결정했습니다&rsquo;S 도서관. Reactjs는 분명히 그것의 일부였으며 여전히 앱을 기반으로하는 주요 스크립트 중 하나입니다.

헤더에서 메뉴 및 내비게이션까지 Reactjs 사용은 모두 Codeacademy에 있으며 다양한 조각의 모든 구성 요소를 포장하는 논리적 솔루션으로 만들어집니다.

Codeacademy의 모든 사람들에 따르면, 그들이 감사하는 React의 일부 측면에는 스크립트는 전투 테스트를 거치고 생각하기 쉽고 SEO를 쉽게 만들고 레거시 코드와 호환되며 미래에 충분히 유연합니다.

또한 커뮤니티 구축을 자극하고 보일러 플레이트에 대한 걱정을 멈출 수 있습니다.

그들이 infoq에 대한 블로그 게시물에서 말하는 것처럼 :

React는 JavaScript와 함께 사용자 인터페이스를 구축하기위한 가볍고 강력한 전투 테스트 라이브러리입니다. 그것&rsquo;전체 프레임 워크가 아니라 프론트 엔드 개발에 접근하는 방식을 변화시킬 수있는 강력한 도구입니다. 우리&rsquo;VE는 그것이 우리의 프론트 엔드 개발에 매우 ​​유용한 도구라는 것을 알았고, 우리는&rsquo;우리의 선택에 매우 만족합니다.

#10 드롭 박스

Dropbox는 1 년 전에 Reactjs로 전환했습니다. 앱 개발자들 사이에서 React가 매우 인기를 얻었을 때.

이 프레임 워크의 일부인 Plethora O 리소스는 Dropbox에서도 효율적으로 활용됩니다.이 놀라운 클라우드 기반 스토리지 서비스 및 온라인 백업 솔루션의 성공에 널리 기여합니다.

반응 앱 = 완벽한 사용자 경험

결국, 위험 감소, 효율성 및 효율성 개선 REACTJS 개발자 보고서 및 수많은 조직의 이점이 모두 앱의 큰 이름이 Reactjs로 업그레이드 하고이 스크립트가 제공하는 놀라운 혜택을 이용하는 이유였습니다.

그리고 모든 프레임 워크 업그레이드는 시간과 비용과 관련하여 피해를 입히지만 완벽한 사용자 경험을 만들 때는 웹이나 모바일 앱에 있어야합니다.

자원:

  • https : // yahooeng.텀블러.com/post/101682875656/Evolving-yahoo-mail (이미지)
  • https : // 트위터.com/reacteurope/status/558097823330492416 (이미지)