Fork me on GitHub

2017-06-19 JS: webpack v3.0.0, redux 3.7.0, JavaScript 최적화 핸드북

Translator: U-Yeong Ju Edit on GitHub See Revisions

JSer.info #336 - webpack 3이 릴리즈됐습니다.

vote 결과 상위에 랭크되어 있는 Scope Hoisting 기능을 담당할 webpack.optimize.ModuleConcatenationPlugin 플러그인이 추가됐습니다.
이 기능은 Rollup과 마찬가지로 ES module 문법으로 작성돼 있는 경우에만 적용됩니다.

node: false로 설정하여 node와 관련된 기능을 모두 무효화(disable)할 수 있도록 기능이 추가됐고, SourceMap과 관련된 버그가 수정되는 등 다양한 변경 사항이 있습니다.


Redux 3.7.0이 릴리즈됐습니다.

UMD 파일 번들 도구가 webpack2에서 rollup.js로 변경됐습니다. 이에 의해 배포되는 UMD 파일의 사이즈가 작아졌으며 이 외 몇 가지 개선이 이뤄졌습니다.


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 ReleaseNote

TypeScript 2.4 RC가 릴리즈됐습니다.
Dynamic import 문법을 지원하며 Promise 등 generic type 간 취급 방식이 변경됐습니다 또, 모든게 옵셔널인 I/F(weak types)의 타입 검사가 보다 강력하게 변경됐으며 String Enum을 지원합니다.


Node v8.1.0 (Current) | Node.js

nodejs.org/en/blog/release/v8.1.0/

node.js ReleaseNote

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 ReleaseNote

Firefox 54.0이 릴리즈됐습니다.
멀티프로세스를 지원(e10s-multi)하며 URL.toJSON 메서드가 구현됐습니다. 그리고 URLSearchParams 생성자가 init 객체로 USVString를 포함한 레코드를 전달 받을 수 있도록 변경됐고 event.timeStamp 프로퍼티가 보다 정밀한 값(DOMTimeStamp가 아닌 DOMHighResTimeStamp을 반환하도록)을 가지도록 바뀌었습니다. 또, URL 객체 생성 시 호스트 명이 없는 URL(http:// 만 있다든가)은 부정확한 값으로 취급되도록 변경됐습니다.


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 ReleaseNote

Chrome 60β가 릴리즈됐습니다.
Paint Timing API, CSS font-display, Object rest/spread properties를 지원합니다.
또, Payment Request API의 데스크탑 버전도 지원하는 등 다양한 변경 사항이 있습니다.


Release 4.0.0 / 2017-05-26 · chaijs/chai

github.com/chaijs/chai/releases/tag/4.0.0

JavaScript testing library ReleaseNote

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

JavaScript ReleaseNote library redux

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

Rx JavaScript ReleaseNote

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 ReleaseNote

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

AngularJS ReleaseNote

Angular 4.2가 릴리즈됐습니다.
이와 함게 angular.io 사이트가 개편됐습니다.


아티클


Auto-Play Policy Changes for macOS | WebKit

webkit.org/blog/7734/auto-play-policy-changes-for-macos/

article audio safari video

Mac Safari도 mobile safari 등과 같이 유저가 설정하지 않으면 MediaElement의 자동 재생이 되지 않도록 변경됐습니다(브라우저 판단 하에 소리 없는 영상은 그대로 자동 재생됩니다. 하지만 사용자가 이 마저도 끌 수 있으므로 관련 처리를 해두는 게 좋을 것 같습니다).
play()가 Promise를 반환하고 실패한 경우 reject 됩니다. Video/Audio/사이트 마다 허가 여부가 결정되므로 여러개의 요소로 따로 만들기보다 하나의 요소에서 src를 변경하는 방법이 권장됩니다.


Choo, architecture & performance – Yoshua Wuyts – Medium

medium.com/@yoshuawuyts/choo-architecture-performance-f6f0c44e8a6a

JavaScript library opinion architecture article

웹 프론트를 작성하는 작은 사이즈의 프레임워크인 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

JavaScript TypeScript article

TypeScript의 --checkJs를 이용해 JavaScript에서 TypeScript로 마이그레이션 하는 방법에 관해 소개돼 있습니다. 화이트리스트, 블랙리스트 각 접근법과 방법에 관해 작성돼 있습니다.


슬라이드, 영상


Handling Long and Unexpected Content in CSS | CSS-Tricks

css-tricks.com/handling-long-unexpected-content-css/

CSS

장문의 컨텐츠(문장)로 인해 의도하지 않게 밀려나온 제목이나 개행되어 레이아웃이 깨지는 결우 어떻게 대처할 수 있는지 패턴별로 정리돼 있습니다.


ng-japan 2017 세션 자료 목록 - Qiita

qiita.com/goto63/items/362cef58e16198e20f56

AngularJS 이벤트 slide video

ng-japan 2017의 발표 영상과 슬라이드가 정리돼 있습니다.


Up and running with Preact - Course by @shaneosbourne @eggheadio

egghead.io/courses/up-and-running-with-preact

React video tutorial

Preact에 관해 소개하는 스크린캐스트입니다.


사이트, 서비스, 문서


JS MythBusters, A JavaScript optimization handbook from a high level point of view.

mythbusters.js.org/

JavaScript performance ebook

JavaScript의 최적화 핸드북입니다.
V8의 최적화 기법이나 알고리즘적인 최적화 방법 그리고 흔히 하는 최적화해 관해 잘 정리 및 설명돼 있습니다.


소프트웨어, 도구, 라이브러리


AmplitudeJS: The HTML Audio Player For The Modern Era

521dimensions.com/open-source/amplitudejs

JavaScript music library

의존 라이브러리 없이 Web Audio API를 사용해 구현한 음악 플레이어 라이브러리입니다.
음악, 플레이리스트 데이터를 설정하여 음악을 재생하는 플레이어를 만들 수 있습니다.


Angelmmiguel/svgi: 🔎 The SVG inspection tool

github.com/Angelmmiguel/svgi

SVG debug

SVG inspection 도구입니다.


25th-floor/spected: Validation library

github.com/25th-floor/spected

JavaScript library

객체에 대한 검증 규칙을 작성하여 검증할 수 있는 라이브러리입니다.


Pull Request to this article
JSer.info Slackに参加する