JSer.info #336 - webpack 3이 릴리즈됐습니다.
vote 결과 상위에 랭크되어 있는 Scope Hoisting 기능을 담당할 webpack.optimize.ModuleConcatenationPlugin
플러그인이 추가됐습니다.
이 기능은 Rollup과 마찬가지로 ES module 문법으로 작성돼 있는 경우에만 적용됩니다.
- The cost of small modules | Read the Tea Leaves
- Scope Hoisting은 모듈의 inlining라고도 불림
또 node: false
로 설정하여 node와 관련된 기능을 모두 무효화(disable)할 수 있도록 기능이 추가됐고, SourceMap과 관련된 버그가 수정되는 등 다양한 변경 사항이 있습니다.
Redux 3.7.0이 릴리즈됐습니다.
UMD 파일 번들 도구가 webpack2에서 rollup.js로 변경됐습니다. 이에 의해 배포되는 UMD 파일의 사이즈가 작아졌으며 이 외 몇 가지 개선이 이뤄졌습니다.
- reactjs - What is flat bundling and why is Rollup better at this than Webpack? - Stack Overflow
- Webpack and Rollup: the same but different – webpack – Medium
JS MythBusters, A JavaScript optimization handbook from a high level point of view.에는 JavaScript 최적화에 관해 작성돼 있습니다.
JavaScript 엔진의 구현에 따라 최적화 방법은 다르지만 arguments
를 사용할 때 주의할 점이나 Date 객체를 이용한 타임스탬프를 만드는 방법 등 도움 될 만한 다양한 기법에 대해 소개 돼 있습니다.
헤드라인
Announcing TypeScript 2.4 RC | TypeScript
blogs.msdn.microsoft.com/typescript/2017/06/12/announcing-typescript-2-4-rc/
TypeScript 2.4 RC가 릴리즈됐습니다.
Dynamic import 문법을 지원하며 Promise 등 generic type 간 취급 방식이 변경됐습니다 또, 모든게 옵셔널인 I/F(weak types)의 타입 검사가 보다 강력하게 변경됐으며 String Enum을 지원합니다.
- 왜 TypeScript의 형 시스템이 건전성을 포기하고 있는가 - Qiita(일본어)
- Breaking Changes · Microsoft/TypeScript Wiki
- What's new in TypeScript · Microsoft/TypeScript Wiki
Node v8.1.0 (Current) | Node.js
nodejs.org/en/blog/release/v8.1.0/
Node.js 8.1.0이 릴리즈됐습니다.
npm 5.0.3으로 업데이트 했으며 --inspect=0
으로 랜덤 포트를 사용할 수 있도록 변경됐습니다.
Firefox — Notes (54.0) — Mozilla
www.mozilla.org/en-US/firefox/54.0/releasenotes/
Firefox 54.0이 릴리즈됐습니다.
멀티프로세스를 지원(e10s-multi)하며 URL.toJSON
메서드가 구현됐습니다. 그리고 URLSearchParams
생성자가 init 객체로 USVString
를 포함한 레코드를 전달 받을 수 있도록 변경됐고 event.timeStamp
프로퍼티가 보다 정밀한 값(DOMTimeStamp가 아닌 DOMHighResTimeStamp을 반환하도록)을 가지도록 바뀌었습니다. 또, URL 객체 생성 시 호스트 명이 없는 URL(http://
만 있다든가)은 부정확한 값으로 취급되도록 변경됐습니다.
- Firefox 54 for developers - Mozilla | MDN
- Firefox 54 사이트 호환성 정보 | Firefox 사이트 호환성 정보(일본어)
- 호스트명을 알 수 없는 URL은 부정확한 것으로 취급되도록 됐습니다(영향이 있는 변경) | Firefox 사이트 호환성 정보(일본어)
Chromium Blog: Chrome 60 Beta: Paint Timing API, CSS font-display, and Credential Management API improvements
blog.chromium.org/2017/06/chrome-60-beta-paint-timing-api-css.html
Chrome 60β가 릴리즈됐습니다.
Paint Timing API, CSS font-display, Object rest/spread properties를 지원합니다.
또, Payment Request API의 데스크탑 버전도 지원하는 등 다양한 변경 사항이 있습니다.
- Leveraging the Performance Metrics that Most Affect User Experience | Web | Google Developers
- WICG/paint-timing: A proposal for a Time To First Paint specification.
Release 4.0.0 / 2017-05-26 · chaijs/chai
github.com/chaijs/chai/releases/tag/4.0.0
Chai 4.0.0이 릴리즈됐습니다.
Node.js 0.12의 지원이 종료됐고, Map
, Set
와 같은 ES6 타입에 대한 평가(Deep equality)가 개선됐습니다. 또, deep
의 동작 방식이 변경됐으며 ES6 Proxy를 사용해 undefined safe한 체인 시스템을 구현하는 등 다양한 변경 사항이 있습니다.
Release v3.7.0 · reactjs/redux
github.com/reactjs/redux/releases/tag/v3.7.0
Redux 3.7.0이 릴리즈됐습니다. Rollup로 bundle한 UMD 번들을 배포하도록 변경됐습니다. 쓸데없는 함수 콜이 줄어들기 때문에 결과적으로 배포 파일의 사이즈가 줄어들었습니다.
rxjs/CHANGELOG.md at 6.0.0-alpha.0 · ReactiveX/rxjs
github.com/ReactiveX/rxjs/blob/6.0.0-alpha.0/CHANGELOG.md
RxJS 6.0.0-alpha.0가 릴리즈됐습니다.
find
, buffer
, first
등의 동작 방식이 변경됐습니다.
Release v3.0.0 · webpack/webpack
github.com/webpack/webpack/releases/tag/v3.0.0
webpack 3.0.0이 릴리즈됐습니다.
Scope Hoisting (webpack.optimize.ModuleConcatenationPlugin
)이 추가됐으며 node: false
로 설정하여 node와 관련된 기능을 모두 무효화(disable)할 수 있도록 기능이 추가됐고, SourceMap과 관련된 버그가 수정됐습니다.
Angular: Angular 4.2 Now Available
angularjs.blogspot.com/2017/06/angular-42-now-available.html
Angular 4.2가 릴리즈됐습니다.
이와 함게 angular.io 사이트가 개편됐습니다.
아티클
Auto-Play Policy Changes for macOS | WebKit
webkit.org/blog/7734/auto-play-policy-changes-for-macos/
Mac Safari도 mobile safari 등과 같이 유저가 설정하지 않으면 MediaElement의 자동 재생이 되지 않도록 변경됐습니다(브라우저 판단 하에 소리 없는 영상은 그대로 자동 재생됩니다. 하지만 사용자가 이 마저도 끌 수 있으므로 관련 처리를 해두는 게 좋을 것 같습니다).
play()가 Promise를 반환하고 실패한 경우 reject 됩니다. Video/Audio/사이트 마다 허가 여부가 결정되므로 여러개의 요소로 따로 만들기보다 하나의 요소에서 src를 변경하는 방법이 권장됩니다.
Choo, architecture & performance – Yoshua Wuyts – Medium
medium.com/@yoshuawuyts/choo-architecture-performance-f6f0c44e8a6a
웹 프론트를 작성하는 작은 사이즈의 프레임워크인 Choo 아키텍처를 소개하는 글입니다.
Choo를 구성하는 작은 사이즈의 라이브러리와 이를 선택한 이유 그리고 성능에 관해 이야기합니다.
TypeScript 2.3: Type-Checking JavaScript Files with --checkJs | Marius Schulz
blog.mariusschulz.com/2017/06/16/typescript-2-3-type-checking-javascript-files-with-checkjs
TypeScript의 --checkJs
를 이용해 JavaScript에서 TypeScript로 마이그레이션 하는 방법에 관해 소개돼 있습니다. 화이트리스트, 블랙리스트 각 접근법과 방법에 관해 작성돼 있습니다.
슬라이드, 영상
Handling Long and Unexpected Content in CSS | CSS-Tricks
css-tricks.com/handling-long-unexpected-content-css/
장문의 컨텐츠(문장)로 인해 의도하지 않게 밀려나온 제목이나 개행되어 레이아웃이 깨지는 결우 어떻게 대처할 수 있는지 패턴별로 정리돼 있습니다.
ng-japan 2017 세션 자료 목록 - Qiita
qiita.com/goto63/items/362cef58e16198e20f56
ng-japan 2017의 발표 영상과 슬라이드가 정리돼 있습니다.
Up and running with Preact - Course by @shaneosbourne @eggheadio
egghead.io/courses/up-and-running-with-preact
Preact에 관해 소개하는 스크린캐스트입니다.
사이트, 서비스, 문서
JS MythBusters, A JavaScript optimization handbook from a high level point of view.
JavaScript의 최적화 핸드북입니다.
V8의 최적화 기법이나 알고리즘적인 최적화 방법 그리고 흔히 하는 최적화해 관해 잘 정리 및 설명돼 있습니다.
소프트웨어, 도구, 라이브러리
AmplitudeJS: The HTML Audio Player For The Modern Era
521dimensions.com/open-source/amplitudejs
의존 라이브러리 없이 Web Audio API를 사용해 구현한 음악 플레이어 라이브러리입니다.
음악, 플레이리스트 데이터를 설정하여 음악을 재생하는 플레이어를 만들 수 있습니다.
Angelmmiguel/svgi: 🔎 The SVG inspection tool
SVG inspection 도구입니다.
25th-floor/spected: Validation library
객체에 대한 검증 규칙을 작성하여 검증할 수 있는 라이브러리입니다.