Fork me on GitHub

2018-02-27のJS: webpack 4、プロファイルとパフォーマンス改善、KeyboardEvent.keyCodeの問題

Edit on GitHub 編集履歴を見る

JSer.info #372 - webpack 4が正式リリースされました。

ビルドパフォーマンスの改善、modeオプションの追加、CommonsChunkPluginを廃止し代わりにoptimizeオプションの追加、.wasm.mjsなどをEntry Pointとしてサポートなどが行われています。

新しいプラグインシステムが導入され、plugin/loader周りに破壊的な変更が行われています。
まだ、いくつかのplugin/loaderは4.xには対応していないものもあります。

plugin/loader作者向けのマイグレーションガイドは次の記事で公開されています。


Maybe you don't need Rust and WASM to speed up your JSという記事では、@mralephさんがプロファイルを取りながらパフォーマンス改善を行うことについてをmozilla/source-mapを例に解説しています。

最近、mozilla/source-mapは作者である@fitzgenさんによってWebAssembly + Rustに書き換えられパフォーマンスが改善されました。これについては次の記事で解説されています。

しかし@mralephさんは、元となったJavaScript版での改善の余地について分析し、JavaScript版を元に改善のアプローチを3つのグループに分けて解説しています。
この記事ではd8(V8)やperfを使ったプロファイルを取りながら、言語やV8の実装など深いところまで見ていく形になっています。

また、この記事に対して@fitzgenさんがSpeed Without Wizardryというレスポンス記事を書いているので併せて読むと良さそうです。


KeyboardEvent.keyCodeとは何か - WebStudioという記事ではKeyboardEvent.keyCodeの歴史や問題点について書かれています。

KeyboardEvent.keyCodeはブラウザやOS間で互換性の問題があり、また標準仕様がない問題について書かれています。
keyCodeの代わりにKeyboardEvent.keyKeyboardEvent.codeなど仕様化されたものがあります。


ヘッドライン


jest/CHANGELOG.md at v22.4.0 · facebook/jest

github.com/facebook/jest/blob/v22.4.0/CHANGELOG.md

JavaScript testing library ReleaseNote

Jest 22.4.0リリース。


nohoist in Workspaces | Yarn Blog

yarnpkg.com/blog/2018/02/15/nohoist/

yarn

yarn workspaceのnohoistオプションについての解説


Release v1.1.0 · GoogleChrome/puppeteer

github.com/GoogleChrome/puppeteer/releases/tag/v1.1.0

Chrome library ReleaseNote

puppeteer 1.1.0リリース。
Chromium 66.0.3348.0に更新、BrowserFetcherpage.waitForXPathのサポート。
frame周りのイベントサポートの追加など


Release electron v2.0.0-beta.1 · electron/electron

github.com/electron/electron/releases/tag/v2.0.0-beta.1

Electron ReleaseNote

Electron v2.0.0-beta.1リリース。
Chrome 61.0.3163.10、Node 8.9.3に更新。
非推奨のAPIの削除、window.loadFileのサポート、Macでin-app purchaseのサポートなど


Node v9.6.0 (Current) | Node.js

nodejs.org/en/blog/release/v9.6.0/

node.js ReleaseNote

Node v9.6.0リリース。
asyncResource.emit{Before,After}が非推奨となりasyncResource.runInAsyncScopeを代わりに追加。
Dynamic Importのサポート、vmモジュールがES Moduleをサポート、


Release almin@0.16.0 · almin/almin

github.com/almin/almin/releases/tag/almin%400.16.0

almin ReleaseNote

almin 0.16.0リリース。
Contextdispatcherがオプショナルな引数に変更、almin-react-containerのバグ修正など


🎼webpack 4: released today!!✨ – webpack – Medium

medium.com/webpack/webpack-4-released-today-6cdb994702d4

webpack ReleaseNote opinion

webpack 4リリース。
ビルドパフォーマンスの改善、modeオプションの追加、CommonsChunkPluginの代わりにoptimizeオプションの追加、.wasm.mjsのサポートなど。
新しいプラグインシステムが導入され、plugin/loader周りに破壊的な変更が行われている。


Release v5.7.0 · npm/npm

github.com/npm/npm/releases/tag/v5.7.0

npm ReleaseNote

npm 5.7プレリリース。
package-lockのgit merge conflictを解決するnpm-merge-driverの公開、
常にlock-fileのみを参照するnpm ciコマンドの追加など。
5.7.0にはsudo利用時に問題があるため、5.7.1がリリースされている。


アーティクル


Using Promise.prototype.finally in Node.js | www.thecodebarbarian.com

thecodebarbarian.com/using-promise-finally-in-node-js.html

Promises article JavaScript

Promise#finallyについての記事。
Promiseの状態遷移やfinallyの動作について。またfinallyのハンドラでエラーが起きた際の動作について


Measuring the Impact of 3rd-Party Tags with WebPageTest - Andy Davies

andydavies.me/blog/2018/02/19/using-webpagetest-to-measure-the-impact-of-3rd-party-tags/

web performance article

WebPageTestを使ってサードパーティスクリプトがロードパフォーマンスにどのような影響を与えているかを比較する方法について。
特定のリクエストをブロックした結果と比較する方法について


KeyboardEvent.keyCodeとは何か - WebStudio

d-toybox.com/studio/lib/what_is_keyCode.html

DOM JavaScript キーボード article

KeyboardEvent.keyCodeの歴史や実装について。 keyCodeはOSやブラウザ間で問題があり標準化もされていないため、keycodeを代わりに使うべきという話。


Maybe you don't need Rust and WASM to speed up your JS

mrale.ph/blog/2018/02/03/maybe-you-dont-need-rust-to-speed-up-your-js.html

JavaScript performance V8 article opinion

プロファイルを取りながらパフォーマンスを改善していく話。 Rust + wasmで書き直されたSource Mapライブラリを例に、JS版でのボトルネックを調べ改善していく話。 アルゴリズムの改善、言語に依存する問題、実装に依存する問題について


スライド、動画関係


ECMAScriptの使い方

azu.github.io/slide/2018/node/ecmascript39.html

ECMAScript JavaScript slide

ECMAScriptのバージョンの歴史、なぜES2016以降の策定プロセスを変更したのかについて。
各ブラウザ実装の比較、仕様やプロポーザルの調べ方や利用方法について


ソフトウェア、ツール、ライブラリ関係


Wedgetail

wedgetail.js.org/index.html

JavaScript benchmark library node.js performance testing

コードの実行時間が期待値かをテストするライブラリ。 low、hight、averageを指定しコードの実行時間のテストを行える。 またパーセンタイルに対応している。


theia-ide/theia: Theia is a cloud & desktop IDE framework implemented in TypeScript.

github.com/theia-ide/theia

editor JavaScript Electron

monaco-editorベースのCould IDE、Desktop IDE。


書籍関係


Exploring ES2018 and ES2019

exploringjs.com/es2018-es2019/

ECMAScript book

Exploring ES2018 and ES2019が公開された


この記事へ修正リクエストをする
JSer.info Slackに参加する