Submit Search
Upload
13.code split
•
0 likes
•
190 views
Daniel Lim
Follow
Reactjs에서 code split에 대하여 알아봅니다.
Read less
Read more
Software
Report
Share
Report
Share
1 of 13
Download now
Download to read offline
Recommended
제 5회 DGMIT R&D 컨퍼런스: NODE.JS란?
제 5회 DGMIT R&D 컨퍼런스: NODE.JS란?
dgmit2009
20130709 gradle
20130709 gradle
Sukjin Yun
그레이들(Gradle)로 만드는 안드로이드 요리법
그레이들(Gradle)로 만드는 안드로이드 요리법
양 한빛
Html5 게임 기술의 개요
Html5 게임 기술의 개요
Changhwan Yi
이클립스 플랫폼
이클립스 플랫폼
Kenu, GwangNam Heo
Dev team chronicles
Dev team chronicles
Kenu, GwangNam Heo
Seuk sak
Seuk sak
SeongHyuk Jeong
Unionweb프로젝트
Unionweb프로젝트
Dong-Jin Park
Recommended
제 5회 DGMIT R&D 컨퍼런스: NODE.JS란?
제 5회 DGMIT R&D 컨퍼런스: NODE.JS란?
dgmit2009
20130709 gradle
20130709 gradle
Sukjin Yun
그레이들(Gradle)로 만드는 안드로이드 요리법
그레이들(Gradle)로 만드는 안드로이드 요리법
양 한빛
Html5 게임 기술의 개요
Html5 게임 기술의 개요
Changhwan Yi
이클립스 플랫폼
이클립스 플랫폼
Kenu, GwangNam Heo
Dev team chronicles
Dev team chronicles
Kenu, GwangNam Heo
Seuk sak
Seuk sak
SeongHyuk Jeong
Unionweb프로젝트
Unionweb프로젝트
Dong-Jin Park
Spring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCode
dpTablo
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
JinKwon Lee
Backend Master | 3.1.1 Build - JS build tools
Backend Master | 3.1.1 Build - JS build tools
Kyunghun Jeon
How to build Design System?
How to build Design System?
John Kim
최근 Javascript framework 조사
최근 Javascript framework 조사
Kichul Jung
Single-page Application
Single-page Application
Sangmin Yoon
모듈시스템과 webpack
모듈시스템과 webpack
DataUs
Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.
효근 박
Front end dev 2016 & beyond
Front end dev 2016 & beyond
Jae Sung Park
프론트엔드 개발 첫걸음
프론트엔드 개발 첫걸음
DataUs
Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012
Daum DNA
Sencha ExtJS를 활용한 Big Data Platform 개발 사례
Sencha ExtJS를 활용한 Big Data Platform 개발 사례
미래웹기술연구소 (MIRAE WEB)
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
Dae Kim
[2022]Flutter_IO_Extended_Korea_멀티모듈을활용한플러터클린아키텍처_...
[2022]Flutter_IO_Extended_Korea_멀티모듈을활용한플러터클린아키텍처_...
Taekyu Lim
프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트
jeong seok yang
Lablupconf session8 "Paving the road to AI-powered world"
Lablupconf session8 "Paving the road to AI-powered world"
Lablup Inc.
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
중선 곽
Customizing Gis Programs
Customizing Gis Programs
MinPa Lee
Gradle Kotlin 컨벤션 플러그인으로 효율적으로 멀티 모듈 관리하기
Gradle Kotlin 컨벤션 플러그인으로 효율적으로 멀티 모듈 관리하기
YoungjikYoon
생산성을 높여주는 iOS 개발 방법들.pdf
생산성을 높여주는 iOS 개발 방법들.pdf
ssuserb942d2
내가 생각하는 개발자란?
내가 생각하는 개발자란?
Daniel Lim
개발자를 넘어 기술 리더로 가는 길을 읽고
개발자를 넘어 기술 리더로 가는 길을 읽고
Daniel Lim
More Related Content
Similar to 13.code split
Spring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCode
dpTablo
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
JinKwon Lee
Backend Master | 3.1.1 Build - JS build tools
Backend Master | 3.1.1 Build - JS build tools
Kyunghun Jeon
How to build Design System?
How to build Design System?
John Kim
최근 Javascript framework 조사
최근 Javascript framework 조사
Kichul Jung
Single-page Application
Single-page Application
Sangmin Yoon
모듈시스템과 webpack
모듈시스템과 webpack
DataUs
Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.
효근 박
Front end dev 2016 & beyond
Front end dev 2016 & beyond
Jae Sung Park
프론트엔드 개발 첫걸음
프론트엔드 개발 첫걸음
DataUs
Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012
Daum DNA
Sencha ExtJS를 활용한 Big Data Platform 개발 사례
Sencha ExtJS를 활용한 Big Data Platform 개발 사례
미래웹기술연구소 (MIRAE WEB)
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
Dae Kim
[2022]Flutter_IO_Extended_Korea_멀티모듈을활용한플러터클린아키텍처_...
[2022]Flutter_IO_Extended_Korea_멀티모듈을활용한플러터클린아키텍처_...
Taekyu Lim
프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트
jeong seok yang
Lablupconf session8 "Paving the road to AI-powered world"
Lablupconf session8 "Paving the road to AI-powered world"
Lablup Inc.
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
중선 곽
Customizing Gis Programs
Customizing Gis Programs
MinPa Lee
Gradle Kotlin 컨벤션 플러그인으로 효율적으로 멀티 모듈 관리하기
Gradle Kotlin 컨벤션 플러그인으로 효율적으로 멀티 모듈 관리하기
YoungjikYoon
생산성을 높여주는 iOS 개발 방법들.pdf
생산성을 높여주는 iOS 개발 방법들.pdf
ssuserb942d2
Similar to 13.code split
(20)
Spring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCode
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
Backend Master | 3.1.1 Build - JS build tools
Backend Master | 3.1.1 Build - JS build tools
How to build Design System?
How to build Design System?
최근 Javascript framework 조사
최근 Javascript framework 조사
Single-page Application
Single-page Application
모듈시스템과 webpack
모듈시스템과 webpack
Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.
Front end dev 2016 & beyond
Front end dev 2016 & beyond
프론트엔드 개발 첫걸음
프론트엔드 개발 첫걸음
Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012
Sencha ExtJS를 활용한 Big Data Platform 개발 사례
Sencha ExtJS를 활용한 Big Data Platform 개발 사례
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
[2022]Flutter_IO_Extended_Korea_멀티모듈을활용한플러터클린아키텍처_...
[2022]Flutter_IO_Extended_Korea_멀티모듈을활용한플러터클린아키텍처_...
프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트
Lablupconf session8 "Paving the road to AI-powered world"
Lablupconf session8 "Paving the road to AI-powered world"
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
오픈소스 프레임워크 기반 웹 서비스 설계 (Example)
Customizing Gis Programs
Customizing Gis Programs
Gradle Kotlin 컨벤션 플러그인으로 효율적으로 멀티 모듈 관리하기
Gradle Kotlin 컨벤션 플러그인으로 효율적으로 멀티 모듈 관리하기
생산성을 높여주는 iOS 개발 방법들.pdf
생산성을 높여주는 iOS 개발 방법들.pdf
More from Daniel Lim
내가 생각하는 개발자란?
내가 생각하는 개발자란?
Daniel Lim
개발자를 넘어 기술 리더로 가는 길을 읽고
개발자를 넘어 기술 리더로 가는 길을 읽고
Daniel Lim
스크럼 101
스크럼 101
Daniel Lim
nodejs_101.pdf
nodejs_101.pdf
Daniel Lim
For You
For You
Daniel Lim
Nest js 101
Nest js 101
Daniel Lim
피드백 시스템
피드백 시스템
Daniel Lim
12.context api
12.context api
Daniel Lim
11.react router dom
11.react router dom
Daniel Lim
9.component style
9.component style
Daniel Lim
7.component life cycle
7.component life cycle
Daniel Lim
8.hooks
8.hooks
Daniel Lim
6.component repeat
6.component repeat
Daniel Lim
4.event handling
4.event handling
Daniel Lim
5.ref 101
5.ref 101
Daniel Lim
3.component 101
3.component 101
Daniel Lim
2.jsx 101
2.jsx 101
Daniel Lim
1.react 101
1.react 101
Daniel Lim
Swagger? OAS? with NodeJS
Swagger? OAS? with NodeJS
Daniel Lim
CuKu V1.3
CuKu V1.3
Daniel Lim
More from Daniel Lim
(20)
내가 생각하는 개발자란?
내가 생각하는 개발자란?
개발자를 넘어 기술 리더로 가는 길을 읽고
개발자를 넘어 기술 리더로 가는 길을 읽고
스크럼 101
스크럼 101
nodejs_101.pdf
nodejs_101.pdf
For You
For You
Nest js 101
Nest js 101
피드백 시스템
피드백 시스템
12.context api
12.context api
11.react router dom
11.react router dom
9.component style
9.component style
7.component life cycle
7.component life cycle
8.hooks
8.hooks
6.component repeat
6.component repeat
4.event handling
4.event handling
5.ref 101
5.ref 101
3.component 101
3.component 101
2.jsx 101
2.jsx 101
1.react 101
1.react 101
Swagger? OAS? with NodeJS
Swagger? OAS? with NodeJS
CuKu V1.3
CuKu V1.3
13.code split
1.
codesplit 임광규 2020.ReactJS 1
2.
codesplit 리액트프로젝트를완성하여사용자에게제공할때는 빌드 작업을거쳐서배포합니다. 빌드작업을통해프로젝트에서사용되는자바스크립트파일안에서불필요한
주석 , 경고 메시 지 , 공백 등을제거하여파일크기를최소화하고브라우저에서JSX문법이나다른최신자바스 크립트문법이원활하게실행되도록코드의 트랜스파일 작업도합니다. 이런작업은웹팩(webpack)이라는도구를사용합니다. 웹펙에서별도의설정을하지않으면프로젝트에서사용중인모든자바스크립트파일이하나의 파일로합쳐지고,모든CSS파일도하나의파일로합처집니다. 2020.ReactJS 2
3.
reactstandardcodesplit Create-React-app을이용하여프로젝트를생성하면최소두개이상의자바스크립트파일이 생성됩니다. 기본설정에는SplitChunks라는기능이적용되어node_modules에서불러온파일,일정크기이상 의파일,여러파일간의공유돈파일을자동으로따로분리시켜서캐싱의효과를제공합니다. 2020.ReactJS 3
4.
build결과 /build/static/js밑에2.XXXX로시작하는파일이포함되어있습니다. 2로시작하는파일에는React,ReactDOM등node_modules에서불러온라이브러리관련코 드가들어있고,main으로시작하는파일에는직접프로젝트에작성하는App같은컴포넌트에 대한코드가들어있습니다. 소스코드를수정후다시빌드를해도node_modules의변경없이2.XXXX파일명은변하지않습니 다. 이렇게파일을분리하는작업을코드스프리팅이라고합니다. 2020.ReactJS 4
5.
Reactcodesplit Create-React-app으로생성된프로젝트에는단순히효율적인캐싱효과만있습니다. A,B,C로구성되었고A페이지에서는B페이지와C페이지에서사용하는컴포넌트는필요하 지않습니다. 하지만리액트프로젝트에서별도로설정하지않으면A,B,C컴포넌트에대한코드가모두한파일 (main)에저장됩니다. 애플리케이션의규모가커지면지금당장필요하지않는컴포넌트정보도모두불러서파일크기가매 우커집니다. 이런문제를해결해줄수있는방법이바로 코드 비동기
로딩 입니다. 코드비동기로딩을통해자바스크립트함수,객체혹은컴포넌트를처음에는불러오지않고필요한시 점에불러와서사용할수있습니다. 2020.ReactJS 5
6.
자바스크립트함수비동기로딩 일반자바스크립트함수를스플리팅해본니다. hi.js export default ()
= { alert("hi"); } 일반호출 import React from 'react'; import SayHi from './hi'; export default () = { const onClick = () => sayHi(); return <div onClick={onClick}>HI</div>; } 2020.ReactJS 6
7.
비동기로딩 import React from
'react'; export default () => { const onClick = () => { import('./hi').then(result => result.default()); }; return <div onClick={onClick}>HI</div>; } 이렇게import를함수로사용하는문법은아직표준자바스크립트가아니지만dynamicimport라는 문법입니다.현재웹팩에서지원하고있음으로별도의설정없이프로젝트에바로사용할수있습니다. 이렇게불러온모듈에서default로내보낸것은result.default로참조해야사용할수있습니다. 2020.ReactJS 7
8.
React.lazy와Suspense를이용한컴포넌트코드스플리팅 React.lazy와Suspense기능은리액트v16.6에도입되었습니다. import React, {
Suspense } from 'react'; const SayHi = React.lazy(() => import('./hi')); export default () => { const [visible, setVisible] = React.useState(false); const onClick = () => setVisible(true); return ( <div> <p onClick={onClick}>HI</p> <Suspense fallback={<div>loading...</div>}> {visible && <SayHi />} </Suspense> </div> ); } 2020.ReactJS 8
9.
LoadableComponents를통한코드스플리팅 LoadableComponents는코드스플리팅을편하게하도록도와주는서드파티라이브러리입 니다. 이라이브러리의장점은서버사이느랜더링(SRR)을지원한다는것입니다. 또한랜더링하기전에필요한스프리팅된파일을미리불러올수있는기능도제공합니다. 서버사이드랜더링이란웹서비스의초기로딩속도개선,캐시및검색엔진최적화를가능하게해주는기술입니 다.서버사이드랜더링을사용하면웹서비스의초기랜더링을사용자의브라우정가아닌서버쪽에서처리합니 다. 2020.ReactJS 9
10.
설치&사용예 $ yarn add
@loadable/component or $ npm install @loadable/component --save import React from 'react'; import loadable from '@loadable/component'; const SayHi = loadable(() => import('./hi')); export default () => { const [visible, setVisible] = React.useState(false); const onClick = () => setVisible(true); return ( <div> <p onClick={onClick}>HI</p> {visible && <SayHi />} </div> ); } 2020.ReactJS 10
11.
로딩중다른UI를보여주고싶다면loadable를사용하는부분을다음과같이 수정합니다. const SayHi =
loadable(() => import('./hi'), { fallback: <div>loading...</div> }); 2020.ReactJS 11
12.
컴포넌트미리불러오기 마우스커서를올리기만해도로딩이시작됩니다. import React from
'react'; import loadable from '@loadable/component'; const SayHi = loadable(() => import('./hi')); export default () => { const [visible, setVisible] = React.useState(false); const onClick = () => setVisible(true); const onMouseOver = () => SayHi.preload(); return ( <div> <p onClick={onClick} onMouseOver={onMouseOver}>HI</p> {visible && <SayHi />} </div> ); } 2020.ReactJS 12
13.
마치며 React.lazy / Suspese
와 Loadable Components 의가장큰차이는서버사이드랜더링 (SRR)입니다. 서버사이드랜더링을구현할예정이면LoadableComponents를사용하도록래엑트공식문서에도 권장하고있습니다. 2020.ReactJS 13
Download now