JSer.info #361 - 設定より規約(Convention over configuration)なbundlerであるParcelがリリースされました。
webpackやFuseBoxは詳細を設定ファイルで扱いますが、Parcelには現時点では設定ファイルがありません。
代わりにビルトインのプラグインとpacakge.json
に書かれたparcel-plugin-
から始まる名前のパッケージをPluginsとして読み込むことで、対応するファイル(Assets)などを拡張します。
(Assetの内部処理として、それぞれのAssetsに対応する設定ファイルを使う仕組み。たとえばJSAssetならば内部的にBabelが利用され、.babelrc
を読み込んで処理される)
JavaScriptだけではなくHTMLファイルをEntry pointとして扱うことができるため、典型的にはHTMLを起点にそこから読み込まれているAsset(CSSやJavaScriptなど)の依存を集めてビルドします。
$ parcel build src/index.html
# distフォルダへAssets毎{js,css,htmlなど}のパッケージ結果が出力される
また、FuseBoxのようなAsset単位のファイルキャッシュをしていて、デフォルトでは2度目のビルドからキャッシュが利用されます。
一方、公式サイトに掲載されているBenchmarkの詳細は明らかにされていないため、キャッシュなしにおける優位性は不明です。
(parcelではsource map supportがまだサポートされていないなど、同等の設定での計測かは明確にはなっていない。)
webpackの次のメジャーアップデートであるwebpack 4.0.0-alpha.0が公開されています。
BREAKING CHANGEとしてはNode.js 4のサポート終了、新しいプラグインシステムの追加と既存プラグインの変更などが中心です。既存のプラグインも基本的には互換性を持ちますが、一部プラグインではWorkaroundが必要になるようです。
新しく--mode
オプション("devevelop" or "production")の追加が行われています。
これは現在の-d
や-p
を整理して、webpackコア側の設定を"devevelop" or "production"にするものです。
-d
=--mode development --devtool cheap-module-eval-source-map
-p
=--mode production --plugin uglifyjs-webpack-plugin
- Webpack 4: include UglifyJsPlugin under the production mode · Issue #6075 · webpack/webpack
また、module typeとしてesm(.mjs
)とwebassembly(.wasm
)をデフォルトで探すようになり、sideEffects
設定のサポートなどが追加されています。
Parcelのリリースを受けて、webpackの今後のロードマップに投票できるVoteにZero Config Modeが追加されています。
Alright #JavaScript #webpack folks, I've created the voting item!
— Sean Thomas Larkin (@TheLarkInn) December 8, 2017
If you _really_ want a Zero Configuration (aka your configs live in .postcss, .babel, .everythingelse), we can do this. It seems like theres folks who want this.) Thanks @parceljs 4 ideas! https://t.co/y57ALM28fB pic.twitter.com/m5RYhR4s3N
Node.js Performance 改善ガイド - from scratchという記事ではNode.jsアプリケーションのパフォーマンス改善方法について書かれています。
メモリ、CPU、ファイルI/O、ネットワークそれぞれにおける典型的なボトルネックの調べ方や改善方法について。
また、JavaScriptの最適化の問題や、クラスタやNative Addonなどの代替手法についてなどについてかかれています。
JSer.infoをサポートするには
- 😘 知り合いにJSer.infoをおすすめする
- ❤️ GitHub Sponsorsで@azuのスポンサーになる
- 🐦 X(Twitter)で@jser_infoをフォローする
JSer.info Sponsors
JSer.info SponsorsはGitHub SponsorsとしてJSer.infoを支援してくれている方々です。
ヘッドライン
Release 1.9.0: JSX Fragments, EditorConfig and Arrow Parens · prettier/prettier
github.com/prettier/prettier/releases/tag/1.9.0
Prettier 1.9.0リリース。
JSXのFragment(<></>
)wpサポート、EditorConfigのサポート、Markdownのサポート改善。
📦 Parcel
HTML,JS,CSSなどをまとめてbundleできるツール。
設定不要で使えること、高速にビルドできることが目的のツール。
ファイルタイプに対する処理をプラグインとして追加できる。
GoogleChromeLabs/jsvu: JavaScript (engine) Version Updater
github.com/GoogleChromeLabs/jsvu
各種JavaScriptエンジンをダウンロード、インストールできるツール。
eshost-cliと組み合わせることでChakra、JavaScriptCore、SpiderMonkey、V8でのJavaScript実行結果を同時に得られる。
Release Notes for Safari Technology Preview 45 | WebKit
webkit.org/blog/8039/release-notes-for-safari-technology-preview-45/
Safari Technology Preview Release 45リリース。
SVGフィルターの最適化、display:contents
をデフォルトで有効化、OffscreenCanvas.getContext("webgl")
を実装など
mochify.js/CHANGES.md at v5.0.0 · mantoni/mochify.js
github.com/mantoni/mochify.js/blob/v5.0.0/CHANGES.md
Mochaを使ったテストをブラウザで動かすMchify 5.0.0リリース。
PhantomJSからHeadless Chromeに変更、--url
オプションの追加など
Angular 5.1 & More Now Available – Angular Blog
blog.angular.io/angular-5-1-more-now-available-27d372f5eb4e
Angular 5.1リリース。
CLIがService Workerオプション、App Shellオプションサポート、TypeScript 2.5サポートなど
webpack 4.0.0-alpha.0 feedback · Issue #6064 · webpack/webpack
github.com/webpack/webpack/issues/6064
webpack 4.0.0-alpha.0リリース。
Node.js 4のサポート終了、--mode
(dev/prod)の追加。
module typeとしてesm、webassemblyのサポート、sideEffects
設定のサポート。
新しいプラグインシステムの追加と既存プラグインの変更など
アーティクル
Qiita の新記事ページのレイアウト実装 - Qiita
qiita.com/morishitter/items/c4aa500929f2de441bfd
CSS Grid Layoutとposition: sticky
でのレイアウトについて
PuppeteerでWebページからメインコンテンツっぽいところを抽出してみる - Qiita
qiita.com/ukyo/items/287169de85576dfed608
PuppeteerでスクレイピングしたDOM要素のスコアリングして、メインコンテンツを抽出する仕組みについて
await vs return vs return await - JakeArchibald.com
jakearchibald.com/2017/await-vs-return-vs-return-await/
async functionの中でawait
とreturn
、return await
の違いについてを解説した記事
New in Chrome 63 | Web | Google Developers
developers.google.com/web/updates/2017/12/nic63
Chrome 63リリース。
Dynamic imports、Async iterator、Promise#finally
、Intl.PluralRules
、CSS overscroll-behavior
プロパティのサポートなど
Node.js Performance 改善ガイド - from scratch
yosuke-furukawa.hatenablog.com/entry/2017/12/05/125517
Node.jsのパフォーマンスの調査や測定をする方法について。
メモリリーク、CPUの処理時間、ファイルI/O、ネットワークのボトルネック調査について。
またJavaScriptのdeoptが起きてないか、クラスタやNative Addonなどの代替手法についてなど
Vanilla JSで学ぶRedux - Qiita
qiita.com/ryota-murakami/items/2ed6b12943214ecfeeaf
Reduxのコードを見ながらReduxの仕組みについて解説している記事。
Prototype Tree · TryCatch
zhirzh.github.io/2017/12/06/prototype-tree/
JavaScriptオブジェクトのprototypeツリーをD3.jsを使って可視化する話
歴史的遺物callback interfaceの紹介 - Qiita
qiita.com/yuki3/items/ab20985e70247c80d19c
addEventListener
のcallback interfaceとrequestAnimationFrame
などのcallback functionという仕様の違いついて。
イベントハンドラにおけるhandleEvent
の動作について
Using Headless Mode in Firefox – Mozilla Hacks – the Web developer blog
hacks.mozilla.org/2017/12/using-headless-mode-in-firefox/
SeleniumをFirefoxのHeadlessモードで動かす方法、Debugging Protocolについてなど
Fast Source Map Generation for React Native – David Aurelio – Medium
medium.com/@david.aurelio/medium-fast-source-map-generation-for-react-native-ea5549007c18
React Native(Metro)が利用するSource Mapの高速な実装について
https://github.com/facebook/metro/tree/master/packages/metro-source-map
React Performance Fixes on Airbnb Listing Pages – Airbnb Engineering & Data Science – Medium
medium.com/airbnb-engineering/recent-web-performance-fixes-on-airbnb-listing-pages-6cd8d93df6f4
Reactを使ったアプリケーションのパフォーマンスを測定し、それをどのように修正していったかについての記事。
PureComponent
での無駄な描画を防止、スクロール時の処理、入力欄などについて
Performance Calendar » Clearing cache in the browser
calendar.perfplanet.com/2017/clearing-cache-in-the-browser/
ウェブアプリ側からブラウザのキャッシュをクリアするさまざまな手法のまとめ。
location.reload(true)
、Vary、fetch、iframe、Clear-SIte-Dataなどの手法毎にブラウザの対応についてまとめている。
スライド、動画関係
JSConf Budapest 2017 - YouTube
www.youtube.com/playlist?list=PL37ZVnwpeshH9ztZfHqvQhF1_Zm4VcCTD
JSConf Budapest 2017の動画まとめ
Eirik Vullum: JavaScript Metaprogramming - ES6 Proxy Use and Abuse | JSConf Budapest 2017 - YouTube
www.youtube.com/watch?v=_5X2aB_mNp4
ES Proxyを活用したメタプログラミングについての発表動画
MakeYouAReact - Google スライド
ReactのようなViewライブラリを自作するために必要な技術について解説してるスライド。
実際に実装を作りながら、DOMのdiff/patchなどについて解説している。
サイト、サービス、ドキュメント
Three.js入門サイト - ICS MEDIA
ics.media/tutorial-three/index.html
Three.jsについてのチュートリアルサイト。
Three.jsの使い方やWebGLについて
i0natan/nodebestpractices: The largest Node.JS best practices list. Curated from the top ranked articles and always updated
github.com/i0natan/nodebestpractices
Node.jsとexpressについてのプラクティスガイド。
WasmFiddle
WebAssemblyのjsfiddle的なサービス。
Wasmのコンパイルと実行、wast/wasmのダウンロードができる。
jsdom/whatwg-mimetype: Parses, serializes, and manipulates MIME types, according to the WHATWG MIME Sniffing Standard
github.com/jsdom/whatwg-mimetype
MIME typesのパーサ、シリアライズライブラリ
ソフトウェア、ツール、ライブラリ関係
deeplearn.js
WebGLを使った機械学習向けのライブラリ。
同期的な(NumPyのような)計算実行と遅延的な(TensorFlowのような)計算実行をサポートしている。