JSer.info #524 - webpack 5.17.0がリリースされました。
webpack 5.17.0では experiments.lazyCompilation
オプションが試験的に追加されています。
experiments.lazyCompilation
は、webpack dev serverなどのローカルサーバと組み合わせて動作します。
experiments.lazyCompilation
は、Dynamic Importしているモジュール(chunk)を起動時にはビルドせずに、そのモジュールがロードされた際にビルドする遅延コンパイルの仕組みです。
仕組み的には、初回のビルド時にDynamic Importしているモジュールは、lazyCompilationをするためのProxy的なモジュールとしてビルドされます。このモジュールはlazyCompilationのclient
となり読み込まれた際に、lazyCompilationのbackend
側にServer Sent Eventを使って読み込まれたことを通知します。
lazyCompilationのbackend
はclient
からの通知を受け取ったら、実際のモジュールをビルドして返す仕組みになっています。
このclient
とbackend
もそれぞれexperiments.lazyCompilation
オプションで独自のものが定義できるようになっていて、デフォルトではwebpack dev serverで動くコードになっています。
初回の起動時のコンパイル範囲を抑えることで、開発サーバの立ち上げ速度を改善することが主な目的となっています。
Deno 1.7がリリースされました。
Deno 1.6でサポートされたdeno compile
のサイズ改善とクロスコンパイルの対応が行われています。
Data URLのimportをサポート、deno fmt
のMarkdownサポートが追加されています。
また、Steram APIをWHATWGに準拠するように修正、Web Workerにpermissions
オプションでDeno独自のパーミッションを指定できるようになっています。
その他には、--location
フラグを使って相対URLのFetchに対応、FetchのリクエストbodyにStreamを指定可能になるといった変更も含まれています。
破壊的な変更としてunstableなDeno APIsの変更やUnstable APIとしてDeno.resolveDns
のサポートが含まれています。
Open Web DocsというMDNなどのウェブプラットフォームのドキュメントを改善していくためのプロジェクトが立ち上げられています。
2020年8月のMozillaにおけるレイオフの影響でMDNのWriterなどのチームが縮小されました。
- Changing World, Changing Mozilla - The Mozilla Blog
- An Update on MDN Web Docs - Mozilla Hacks - the Web developer blog
Open Web Docsでは、MDNなどのウェブプラットフォームに関するドキュメントへのコントリビューションをしていく組織です。Open Web DocsのメンバーにはMozilla、Google、Microsoft、W3Cなどがいます。
当面の目標は、MDNの新しいアーキテクチャへの移行のサポート、ブラウザの互換データの改善、JavaScriptのドキュメントの改善などを行っていくようです。
JSer.infoをサポートするには
- 😘 知り合いにJSer.infoをおすすめする
- ❤️ GitHub Sponsorsで@azuのスポンサーになる
- 🐦 X(Twitter)で@jser_infoをフォローする
JSer.info Sponsors
JSer.info SponsorsはGitHub SponsorsとしてJSer.infoを支援してくれている方々です。
ヘッドライン
IPFS Support in Brave
BraveがP2PプロトコルであるIPFS(InterPlanetary File System)をサポート。
Brave 1.19.x以降では、ゲートウェイとローカルノードを使ったIPFSURIの解決ができるようになる。
Release v5.17.0 · webpack/webpack
github.com/webpack/webpack/releases/tag/v5.17.0
webpack 5.17.0リリース。
実験的な機能として、Dynamic Importしているモジュールをアクセスした時にビルドできるexperiments.lazyCompilation
オプションを追加。
起動時にすべてをビルドしないことで、利用してないエントリポイントがビルドパフォーマンスに影響を与えないようにする目的。
- liximomo/lazy-compile-webpack-plugin: Boost webpack startup time by lazily compiling dynamic imports
The Node.js Runtime | Cloud Functions Documentation | Google Cloud
cloud.google.com/functions/docs/concepts/nodejs-runtime#nodejs_14_public_preview
Cloud FunctionがNode.js 14をpublic previewとしてサポート
Deno 1.7 Release Notes
Deno 1.7リリース。
deno compile
のサイズ改善とクロスコンパイルの対応、Data URLのimportをサポート、deno fmt
のMarkdownサポート。
Steram APIをWHATWGに準拠するように修正、Web Workerにpermissions
でDeno独自のパーミッションを指定可能に。
--location
フラグを使って相対URLのFetchに対応、FetchのリクエストbodyにStreamを指定可能になるなど。
破壊的な変更としてDeno APIsの変更やUnstable APIとしてDeno.resolveDns
のサポートが含まれる。
Open Web Docs - Open Collective
opencollective.com/open-web-docs/updates/introducing-open-web-docs
MDNのようなウェブプラットフォームのドキュメントに対して長期的に取り組んでいくためのプロジェクト。MozillaなどのブラウザベンダーやW3Cなどがメンバーにいる。
当面はMDNへのコントリビューションをしていく。
- Supporting Open Web Docs to deliver web developer documentation - Microsoft Edge Blog
- Introducing Open Web Docs
- Welcoming Open Web Docs to the MDN family - Mozilla Hacks - the Web developer blog
- Open Web Docs | Igalia
- Welcome to Open Web Docs! | W3C Blog
- project/membership-expectations.md at main · openwebdocs/project
アーティクル
How to Solve the Infinite Loop of React.useEffect()
dmitripavlutin.com/react-useeffect-infinite-loop/
ReactのuseEffect
の中でStateを更新した場合になぜ無限ループが起きるのか、またその修正方法について
Migrating Puppeteer to TypeScript | Web | Google Developers
developers.google.com/web/updates/2021/01/puppeteer-typescript
PuppeteerのコードベースをJavaScriptからTypeScriptの移行するどのように取り組んでいるかについて
The Secret Parameter, LFR, and Potential RCE in NodeJS Apps
blog.shoebpatel.com/2021/01/23/The-Secret-Parameter-LFR-and-Potential-RCE-in-NodeJS-Apps/
Expressでhbs
(handlebars)を使っている際にres.render
の第2引数にユーザー入力をそのまま渡してしまうと、layout
プロパティによって任意のファイルを読める問題について。
また、Handlerbars 4.0.14未満にあった脆弱性と組み合わせることでRCEにつながるという話
スライド、動画関係
ブラウザの作り方 - Speaker Deck
speakerdeck.com/keiya01/burauzafalsezuo-rifang
Let's build a browser engine!を参考にブラウザのレンダリングエンジンを作りながら、どのようにHTMLやCSSのパースからレンダリングしているのかという話
- keiya01/kamaitachi: `kamaitachi` is a simple browser.
- Let's build a browser engine! Part 1: Getting started
サイト、サービス、ドキュメント
JSitor - JavaScript, HTML, CSS, online editor
jsfiddle的なHTML/CSS/JSを書いて公開できるPlaygroundサービス。
Monaco Editorを使ったエディタ、整形機能を持っている
ソフトウェア、ツール、ライブラリ関係
forgojs/forgo: An ultra-light UI runtime
JSXで書けるUIライブラリ。
Reactとは違いコンポーネント内でもDOM APIを扱う形になっていて、再レンダリングも手動で行う。
ファイルサイズの小ささやフレームワークの抽象を少なくして、DOM APIを知っていれば扱えるようにするのが目的。
Nodepack
Node.jsウェブフレームワーク。
プロジェクトを管理するためのCLIとそれを拡張するプラグインシステムをもつ