JSer.info #277 - Node v6.0.0がリリースされました。
6.xはlong term support (LTS)となるバージョンなので、LTSではない5.xを使っている人はアップデートが推奨されています。
4.xはLTSなので、2017年4月までサポートされます。
6.0.0ではNode v5.10.0にもバックポートされたBuffer APIの変更や、
V8 5.0へのアップデートにより、ES6の93%(Moduleを除く)が利用できるようになっています。
Fetch APIのpolyfillであるgithub/fetch 1.0.0がリリースされました。
IE9のサポートが終了され、URLSearchParams
のサポートの追加などがされています。
Updating Our Prefixing Policy | WebKitという記事では、WebKit/Safariの実験的prefixに関するポリシーの変更が書かれています。
詳細は以下に書かれていますが、今後は新しい機能を導入する際はChromeやFirefoxのようにランタイムフラグ制に変更されます。
今まで、-webkit-
prefixで新機能を導入し、それがあまりにもウェブサイトで使われた結果、ブラウザの実装から-webkit-
を無くすとBreak the webとなる問題が多く発生していました。
-webkit-transform-3d
のように互換仕様としてウェブ標準に-webkit
prefixが存在します。
そのため、ブラウザの設定から有効にしないと新しい機能が利用できないruntime flagsへと変更されました。
ヘッドライン
Node v6.0.0 (Current) | Node.js
nodejs.org/en/blog/release/v6.0.0/
Node.js 6.0.0(LTS)リリース。
v8のアップデートを含むため、Native addonはnpm rebuid
での再ビルドが必要。
Buffer APIが新しくなり、古いAPIは非推奨へ、worker.suicide
はworker.exitedAfterDisconnect
に変更、querystring.parse()
が返すオブジェクトはObject.prototype
を継承しないようになるなど
Chromium Blog: Chrome 51 Beta: Credential Management API and reducing the overhead of offscreen rendering
blog.chromium.org/2016/04/chrome-51-beta-credential-management.html
Chrome 51 Betaリリース。
Credential Management APIのサポート。
offscreenの場合、crosss originのframeにおいてはrequestAnimationFrame()
が呼ばれないように、Intersection Observer 、passive
イベントオプション、V8 5.1へのアップデートなど。
- V8 JavaScript Engine: V8 Release 5.1
- IntersectionObserver/explainer.md at gh-pages · WICG/IntersectionObserver
- Throttling Blink's rendering pipeline for hidden content
- Power usage impact of render pipeline throttling - Google ドキュメント
Release v6.8.0 · babel/babel
github.com/babel/babel/releases/tag/v6.8.0
Babel v6.8.0リリース。
Babel自体がBabel 6でTranspileするようになり、runtimeが5に依存していた問題が修正された
Release Fetch 1.0.0 · github/fetch
github.com/github/fetch/releases/tag/v1.0.0
Fetch APIのpolyfillであるGitHub Fetch 1.0.0リリース。
IE9のサポートを終了、timeout
イベントをハンドルするように、URLSearchParams
のサポートなど
ESLint v2.9.0 released - ESLint - Pluggable JavaScript linter
eslint.org/blog/2016/04/eslint-v2.9.0-released
ESLint v2.9.0リリース。
Autofix --fix
オプションの改善。
今までは一度のパスで適応できないものは諦めていたが、複数回のパスで修正を適応を試みるようになった。
Release SlimerJS 0.10.0 · laurentj/slimerjs
github.com/laurentj/slimerjs/releases/tag/0.10.0
Firefox版のPhantomJS APIの互換実装であるSlimerJS 0.10.0リリース。
Release Notes for Safari Technology Preview 3 | WebKit
webkit.org/blog/6143/release-notes-for-safari-technology-preview-3/
Safari Technology Preview 3リリース。
Symbol.isConcatSpreadable
などのwell-known Symbol実装の追加、
:host()
擬似クラス、IndexedDBがBlob
をサポート、Crypto
、CSP周りの仕様準拠度の向上など
アーティクル
Scroll-linked effects - Mozilla | MDN
developer.mozilla.org/en-US/docs/Mozilla/Performance/Scroll-linked_effects
onscroll
にhookして同期的に位置を変更する処理に対しては警告メッセージが出るようになった。
その場合の対処法についてのドキュメント
Announcing Vue.js 2.0 — The Vue Point — Medium
medium.com/the-vue-point/announcing-vue-js-2-0-8af1bde7ab9
Vue.js 2.0のパブリックプレビュー版リリース。
SnabbdomベースのVirtua lDOM実装の追加など
Updating Our Prefixing Policy | WebKit
webkit.org/blog/6131/updating-our-prefixing-policy/
Safari/WebKitは新しい機能などは今後Vendor prefixではなく、フラグのON/OFFを追加していくようにするポリシーの変更について。
-webkit-
prefixがあまりに使われてしまい、後方互換性のためにprefixが標準仕様となってしまった歴史などもあるため
How to Make Your React Apps 15x Faster – ReactJS News
reactjsnews.com/how-to-make-your-react-apps-10x-faster
Reactはデバッグ向けのコードが大量に入っているため、production(NODE_ENV=production
)ビルドや機械的に最適化できるBabelプラグインを導入するだけでも速度が大分変わるという話
V8 JavaScript Engine: ES6, ES7, and beyond
v8project.blogspot.com/2016/04/es6-es7-and-beyond.html
V8が既存のウェブとの互換性を持ちつつ次期ECMAScriptの仕様を実装しているかのプロセスについて。
ES6の実装が完了する前にドラフトバージョンを実装することで見つけられる後方互換性の問題がある話。
またECMAScriptという複雑な言語仕様のtest suiteであるtest262について。
npmで同じライブラリの複数バージョンをインストールして使う方法 | Web Scratch
efcl.info/2016/05/02/npm-package-mixed-multiple-versions-demo/
一つのプロジェクト内に同名ライブラリの複数バージョンをインストールして扱う方法について
A look at ES6 Maps - Barbarian Meets Coding
www.barbarianmeetscoding.com/blog/2016/04/27/a-look-at-es6-maps
ES6 Mapについての解説。
データ構造としてのMap、Iterableについて
Turbocharged JavaScript refactoring with codemods — Airbnb Engineering & Data Science — Medium
medium.com/airbnb-engineering/turbocharged-javascript-refactoring-with-codemods-b0cae8b326b9
codemodを使ったリファクタリングについて
スライド、動画関係
Almin.js | JavaScriptアーキテクチャ
azu.github.io/slide/2016/child_process_sushi/almin-javascript-architecture.html
Almin.jsの設計の概念的な話やパターンについて。
FluxやCQRSといったパターンにおいて、ドメインモデルをどうやったら考えて実装できるようになるかという話。
サイト、サービス、ドキュメント
Diffee Checker
CSS blend modesを使いiframe同士の描画結果の差分を表示するデモ
ソフトウェア、ツール、ライブラリ関係
Galooshi/import-js: A tool to simplify importing JS modules
指定した関数名から、該当するモジュールのimport文を自動的に探索して追加できるツール。
各種エディタ連携などもある
ericholiveira/studio: A nodejs framework to create decoupled and scalable applications
github.com/ericholiveira/studio
ActorモデルインスパイアなNode.jsのフレームワーク
flickr/yakbak: Record and playback HTTP responses
ProxyとしてHTTPリクエストとレスポンスを記録し、リプレイしたレスポンスを返すことができるNode.jsライブラリ
jeromeetienne/babel-plugin-jsdoced: babel plugin which use jsdoc to implement strong typing in javascript
github.com/jeromeetienne/babel-plugin-jsdoced
jsdoced.jsを使いJSDocからランタイムassertを追加するBabelプラグイン。
jsdoc-to-assertと似てるが、返り値のチェックやProxy APIを使ってプロパティの代入もチェックしている