1 편에 이어 2 편을 이어가겠습니다.(굳이 1, 2 편을 왜 나눈거지..)
JavaScript 배틀그라운드로부터 살아남기
-
JavaScript 의 출현
- 웹 페이지를 정적으로 뿐만 아니라 동적으로도 만들 필요에서 시작
- Java 라는 언어의 마케팅적인 측면(Netscape 와 Sun 간의 협정)으로 JavaScript 라고 명명
- 표준화를 위해 ECMA(European Computer Manufacturers Association)를 선택, ECMAScript 라고도 지칭
-
Evergreen browser 의 출현
- 자동적으로 버전업이 되는 브라우저를 칭함
- Chrome 의 등장으로 브라우저의 스펙이 빠르게 지속적으로 변화
-
오늘날의 JavaScript
- Vanila(기본) JavaScript 개발은 이제 일반적이지 않음
- 보통 Framework 와 Toolchain(Transpiler, Bundling)을 사용
- DOM 핸들링을 Framework 에 맡기고 대다수의 기능들은 npm 패키지를 통해 조립하는 형태로 구현
- Transfiler 의 발달로 ES6+ 이후 ES5 로 컴파일 가능(낮은 버전의 브라우저 지원)
-
JavaScript 의 2018 년 동향
- 브라우저 안에서
-
WebAssembly
- C, C++ 같은 저수준의 언어를 컴파일 타겟으로 한 프로그램을 웹에서 사용할 수 있게 함
- 주요 브라우저와 Node.js 모두 지원
-
정적 타입 시스템
- JavaScript 의 loose typing 문제를 해결
- Langauge 로써는 TypeScript, ReasonML, PureScript 가 있음
- 현재는 TypeScript 가 독점적
- Tool 로써는 Flow
-
React
- 버전 16 기준
- 2017 년에 라이선스 이슈로 골머리를 앓았으나 잘 해결
- Improved Fragments
- 새로운 ContextAPI
- 새로운 Component Lifecycle
- create-react-app 버전 2 가 릴리즈
- 가장 많은 커뮤니티를 가지고 있으며 당분간은 1 인자를 지킬 듯
-
Vue
- 2017 년에 엄청난 주목
- Ecosystem 발달: Nuxt.js, Vuetify
- NativeScript 로 앱 개발 가능
- IE 지원 중단
- 2019 년에 버전 3 릴리즈 예정
-
Angular
- Ivy Renderer
- Angular Elements
- 글 쓴 기준 Angular 7.0 릴리즈
-
Web Components
- 모든 Evergreen browser 에서 지원
- 직접 재사용 가능한 Component 를 만들고 사용할 수 있음
- 언뜻 보면 React 와 비슷해보일 수 있으나 목표가 다름
- Web Component 는 직관적이고 재사용 가능한 Component 를 만들 수 있게 하기 위해
- React 는 Data 와 DOM 이 서로 영향을 줄수 있게 하기 위해
- 브라우저 밖에서
-
Node.js
- 주로 Back-end 영역에서 사용
- 사용하는 기업이 지속적으로 증가
- N-API: 런타임 엔진과 Node.js 간의 추상화 레이어
- Node-ChakraCore: Node.js 를 Microsoft Edge 의 JavaScript 엔진의 Core 인 ChakraCore 를 엔진으로 사용
-
npm
- 전 세계에서 가장 큰 레지스트리로 성장
- 더이상 Bower 를 사용하지 않아도 될 정도
- 7 월부터 포럼 전환(더이상 github 이슈를 사용하지 않음)
-
Yarn
- 현재 약 50 만개의 프로젝트에서 사용
- yarn 을 통한 패키지의 다운로드는 npm 의 0.03%에 불과
- 초기의 yarn 의 장점(속도)가 점점 퇴색
-
Webpack
- 빌드시간이 약 60~98% 감소
- webpack-cli
- 너무 많은 Configuration
-
Parcel
- Webpack 관 다르게 Non-Configuration 번들링 지향
-
NativeScript
- 웹 기술로 모바일 앱 개발을 위해 등장
- Angular 친화적, Vue 도 지원
- AR 및 TV 플랫폼 지원 확산
-
ReactNative
- 역시 웹 기술로 모바일 앱 개발을 위해 등장
- 이름 그대로 React 를 사용
- create-react-native-app 릴리즈
- TV 플랫폼 지원
-
Electron, NW.js
-
PWA
- 웹의 장점과 앱의 장점을 결합한 환경
- Safari 와 Edge 지원 추가
- 다양한 개발 도구 등장
-
WebXR Device API
- WebVR -> WebXR
- Immersive Web: 웹에서 몰입 환경 구현
- 아직은 실험단계
-
Javascript 가 가고있는 길
- Front-end 와 Back-end 의 경계를 흐릿하게 하는 중
- Node.js 재단과 JavaScript 재단의 병합으로 역할이 다양해지는 중
-
Javascript 로 부터 생존하기
- 요즘 트렌드와 브라우저 업데이트 사항 확인하기
- State Of JavaScript, JSConf 등 컨퍼런스, 프로젝트에 관심 갖기
- 프레임워크, 도구들에 너무 의존하지 말 것(결국 JavaScript 로 tranfile 됨)
- 최신 업데이트 사항을 바로 적용하는 것은 좋지 못함(언제 다시 되돌려질지 모름)
- 모든 것을 알아야 한다는 생각에 벗어나자
- ‘적당한’호기심과 ‘지속적인’꾸준함을 가지자
- 슬라이드 자료
파파고 서비스 2 년의 경험
웹 성능 최적화에 필요한 브라우저의 모든 것