Slide 1

Slide 1 text

BunがCommonJS をサポートする理由 ytaisei(安井大晟)

Slide 2

Slide 2 text

ytaisei(安井大晟) ● フロントエンド ● 24卒CyberAgent ● 株式会社AI Shift

Slide 3

Slide 3 text

Bunあまり知らない... ⇨LT応募する ⇨リサーチする

Slide 4

Slide 4 text

「CommonJS is not going away」というブログを発見 • 公式のブログ • 2023年6月なので少し古いかも

Slide 5

Slide 5 text

CJSとESM • CommonJS • ES Modules • require/exportsを使用 • 同期的にロード • 元々サーバでの使用が想定されていた • import/exportを使用 • 同期・非同期でのロードに対応 • ブラウザでもネイティブサポート

Slide 6

Slide 6 text

CJSとESM • CommonJS • ES Modules • require/exportsを使用 • 同期的にロード • 元々サーバでの使用が想定されていた • import/exportを使用 • 同期・非同期でのロードに対応 • ブラウザでもネイティブサポート 新規のプロジェクトであれば ESMが推奨

Slide 7

Slide 7 text

では、なぜCJSをサポートする?

Slide 8

Slide 8 text

public npm registryにおけるCommonJSの割合 • ESMの割合がかなり増えている • 依然としてCJSが67%以上 参考:https://github.com/wooorm/npm-esm-vs-cjs?tab=readme-ov-file

Slide 9

Slide 9 text

CommonJSの存在を尊重する姿勢

Slide 10

Slide 10 text

CommomJSの方がモジュールのLoadが早いケースも

Slide 11

Slide 11 text

CommomJSの方がモジュールのLoadが早いケースも 手元のベンチマークではCJSの方が約1.5倍早かった

Slide 12

Slide 12 text

Bunでは同一File内で importとrequireを使用可能 (CJSとESMの共存が可能)

Slide 13

Slide 13 text

結論 • BunではCJSとESMのどちらもサポートしている • CJS自体のメリットも含めて、 CJSを尊重する姿勢が記事から伺えた

Slide 14

Slide 14 text

Thanks!!! X: ytaisei_ Zenn: @taisei-13046