JSer.info #318 - V8 version 5.7がリリースされました
version 5.5で公開されたasync/awaitやPromiseなどのパフォーマンス改善、RegExpのパフォーマンス改善などが行われています。また、WebAssemblyがデフォルトで有効化されています。
ES6 code currently is substantially slower than ES
-- An update on strong mode
V8においてES2015以降の実装は進んでいましたが、その実装がES5に比べて最適化が進んでいませんでした。
そのためネイティブのES2015+よりも、それをES5相当へ変換した場合に実行速度が良くなるケースもあります。
次のページでそのようなケースがあることについて書かれています。
V8ではネイティブなES2015+の実行速度を改善していくプランを立てていて、今回その一部が入った形です。
(マイクロベンチのような)実行速度だけではなく、コードのファイルサイズやパース/コンパイル速度がパフォーマンスに与える影響については次の記事を読んでみると面白いかもしれません。
- JavaScript Start-up Performance – Dev Channel – Medium
- Progressive Transpilation at Netflix and the road to running native ES2015 in production // Speaker Deck
npm for Beginners: A Guide for Front-end Developersという記事では、npm
について詳しく解説されています。
npm
という言葉がウェブサイト、npm registry、npm clientの3つを示していることや、npm
の使い方、モジュールのインストール方法、コマンドの使い方、関連するツールなどを紹介しています。
私的TypeScriptとの関わり方ガイドライン - 角待ちは対空という記事では、普段JavaScriptを書いている人がTypeScriptに触れる場合の考え方などについて書かれています。
any
の扱い方、コンパイルオプション、TypeScript特有のキーワードや読むと良いドキュメントなどについて書かれています。
JSer.infoをサポートするには
- 😘 知り合いにJSer.infoをおすすめする
- ❤️ GitHub Sponsorsで@azuのスポンサーになる
- 🐦 X(Twitter)で@jser_infoをフォローする
JSer.info Sponsors
JSer.info SponsorsはGitHub SponsorsとしてJSer.infoを支援してくれている方々です。
ヘッドライン
V8 JavaScript Engine: V8 Release 5.7
v8project.blogspot.com/2017/02/v8-release-57.html
V8 5.7リリース。
async/awaitやES2015のパフォーマンス改善、
String#padStart
、Intl.DateTimeFormat#formatToParts
のサポート。wasmがデフォルトで有効化など
Release v4.3.0 · npm/npm
github.com/npm/npm/releases/tag/v4.3.0
npm 4.3.0プレリリース。
--auth-type
の追加、起動速度の改善など
JS1k 2017 - A magical JavaScript golfing competition
1024bytesでJavaScriptのデモを作るコンテンストであるJS1kの2017年の募集が開始された
アーティクル
npm for Beginners: A Guide for Front-end Developers
www.impressivewebs.com/npm-for-beginners-a-guide-for-front-end-developers/
npmとは何か、npmの使い方のチュートリアル。
よく見るプロジェクトのディレクトリ構造、
node_modules
ディレクトリ、npmコマンドとオプションについて
Snapshot testing the hard way | Better world by better software
glebbahmutov.com/blog/snapshot-testing/
JestにはSnapshotテストがあるが、テストフレームワークに依存しないでSnapshotテストを行う方法について
私的TypeScriptとの関わり方ガイドライン - 角待ちは対空
blog.yux3.net/entry/2017/02/05/000805
普段JavaScriptを使って書いてる人向けのTypeScriptの考え方について。
典型的なエラーの意味や、コンパイラオプション、
_
prefixやthis
へ型付けなど特殊な部分について。また、TypeScript特有のキーワードや参考となるドキュメントについて
JavaScript Start-up Performance – Dev Channel – Medium
medium.com/@addyosmani/javascript-start-up-performance-69200f43b201
JavaScriptの起動速度について。
モバイル等CPU処理速度が遅いとパースとコンパイルに時間がかかる。
そのため、ファイルサイズやパース、コンパイル時間は重要となる。
開発者ツールを使っての計測方法、User Timing API、V8のCode Caching、scriptのロード方法の最適化などについて
イベント駆動型サービス実行基盤としての Service Worker - Qiita
qiita.com/nhiroki/items/65efc9e41ec1d928afcd
Better AppCacheから始まったService Workerが、ページに依存しない生存期間へ変化していき、fetch以外のイベントもハンドリングできる基盤となっていった変遷について。
Roundup: Vue.js State Management Libraries ← Alligator.io
alligator.io/vuejs/roundup-state-management-libraries/
Vue.jsにおけるステート管理ライブラリの比較。 特徴やメリット・デメリットについてそれぞれ書かれている
Advanced JavaScript ES2015 Template Strings with Tagged Templates | appendTo
appendto.com/2017/02/advanced-javascript-es2015-template-strings-with-tagged-templates/
Tagged Template Literalについての解説。 サンプルを用いながら、タグ関数の引数について解説してる
スライド、動画関係
Progressive Transpilation at Netflix and the road to running native ES2015 in production // Speaker Deck
Netflixのブラウザ別にTranspileしたJavaScriptを配信するためにやっていることについて。
モダンなブラウザはES2015に対応しているため、変換やpolyfillなどの分として20-40%程度payloadが小さくできる。
一方、圧縮ツールやES2015対応してるかの判定方法などの問題について
AVA Casts
AVAについてのスクリーンキャスト
サイト、サービス、ドキュメント
bahmutov/snap-shot: Jest-like snapshot feature for the rest of us, works magically by finding the right caller function
JestのようなSnapshotテストを行うテストライブラリ
Mnemonist
yomguithereal.github.io/mnemonist/
様々なデータ構造を実装したJavaScriptライブラリ。
Queue、Trie、Linked List、Bloom Filterなど
ソフトウェア、ツール、ライブラリ関係
harksys/npmvet: A simple CLI tool for vetting npm package versions
package.json
とnode_modules
にインストールされているパッケージのバージョンを比較/ロックされているかをチェック出来るツール。手元と毎回新規インストールされるCIにおけるバージョンを揃えるのが目的
- NPM Vet, a simple CLI tool for checking npm package versions - Hark.
- mgol/check-dependencies: Checks if currently installed npm dependencies are installed in the exact same versions that are specified in package.json
Simple Statistics
統計向けのメソッドを実装しているJavaScriptライブラリ
abrahamjagadeesh/npm-module-stats: Get recursive file size and dependencies of any NPM module without installing the module
github.com/abrahamjagadeesh/npm-module-stats
指定したモジュールの依存しているnpmモジュールのファイルサイズを一覧できるツール
davidmfoley/node-trucker: Hauls your node.js source files around
github.com/davidmfoley/node-trucker
JavaScriptファイル間の依存関係を扱ったファイル移動ツール。
ファイルの移動を行ったときに、そのファイルを参照しているファイルにかかれているimportパスも書き換えることができる。