Node.jsとWeb APIのこれまで、現在、これから

Node学園 34時限目 jsconf.eu 報告会
Leko

About me

I love TypeScript/JavaScript, Node.js, React
処理系の中身読んだりAST解析で遊んだり

Agenda

JSConf EU 2019のトーク
Joyee Cheung: Web APIs in Node.js Core: Past, Present, and Future
のまとめです。

トーク情報

  • Slide: talks/web-api-in-node-core.pdf at master · joyeecheung/talks
  • Speaker + Transcript: Joyee Cheung: Web APIs in Node.js Core: Past, Present, and Future

— talks/web-api-in-node-core.pdf at master · joyeecheung/talks

— talks/web-api-in-node-core.pdf at master · joyeecheung/talks

似てるけど異なるAPI

ex. setTimeout, TextDecoder/StringDecoder

  • 異なるAPIをそれぞれ覚えて使い分ける?否
  • Node.jsとWeb APIを近づける

    • 認知的負担を削減
    • 学習用リソースが一元化される
    • (特に初学者の)混乱を減らす

Node.jsのWeb API実装状況

  • Stable

    • URL, URLSearchParams
    • TextEncoder, TextDecoder
  • Experimental

    • Worker Threads
    • Performance Timing API

— web-platform-tests/wpt: Test suites for Web platform specs — including WHATWG, W3C, and others

議論中のWeb API

  • Streams API: nodejs/whatwg-stream, MDN
  • Fetch API: nodejs/node#27979, MDN

— Implement window.fetch into core · Issue #19393 · nodejs/node

Web APIをどう維持していくか

  • Small core philosophy

    • 基本機能のみを提供
    • 独自APIの維持コスト削減
    • Web APIはなるべく入れてく
  • 公式モジュール?コアで提供?

    • パフォーマンス最適化しやすい
    • 内部APIが必要な機能

実行コンテキストの差異

API互換性と根深さ

ex. Stream

  • 度重なるバージョンアップ
  • さらなる新バージョン(Bob Stream)が策定中
  • 多くのAPIで内部的にStreamが使用されている
  • Node.jsの内部APIをWHATWG Streamに置き換えることは困難

— Summit Topic: Bob Streams · Issue #172 · nodejs/summit

Summary

  • NodeとWeb APIはゴールが違かった
  • 多くのWeb APIが取り入れられている
  • ワークフローを改善しより加速させていく

— JSConf EU 2019に行ってきました | WEB EGG

Thanks

  • GitHub: Leko
  • Twitter: @L_e_k_o
  • Blog: https://blog.leko.jp
  • Other talks: https://talks.leko.jp