generated at
JavaScriptのModule System
ES2015(2015/6)より前のJSにはmoduleの仕様がなかった
ES2015で入った
ちなみにNode.jsの公開は2009年頃
そのため、それまでにいくつかのmodule systemに関する仕様が誕生した



仕様と実装
仕様実装例
CommonJSNode.jsserver向け
AMD(JS)RequireJSbrowser向け
ES ModulesES2015から入った標準の仕様
ECMAScript


今後の対応
ブラウザの場合
IEを切れるなら素のESModules
切れないならWebpack + ESModules
Node.jsの場合
CommonJSを使っている所も多い
ESModulesも使える


歴史的な流れ
原初のJS ref
2000年代にJSが流行りだしたが、module周りのことが仕様で決まっていなかった
ブラウザ用の言語だったので<script>を使った読み込みで十分だった
2009年にNode.jsが登場し、server sideでも実行できるようになったが、module周りが決まってないので困った
そこで、Node.jsのmodule systemのために(?)、2009/1にServerJSが登場した
これが2009/8に改名し、CommonJSになった
当時の実装はNode.jsということか #??
このときはBrowserifyは生まれてないmrsekut
この流れの延長で、browser上でもmodule system欲しいとなった
2010年頃にAMD(JS)が策定
2011年頃にAMDのブラウザ上の実装としてRequireJSが誕生
2011/6にCommonJSのブラウザ上の実装としてBrowserifyが誕生
2012にWebpackが誕生し、2015年あたりで流行りだす
2015年にES2015が策定され、ここにES Modulesが含まれる(たぶん)
仕様が決まっただけでまだ使えなかったらしい
WebpackES Modulesに対応
BabelES ModulesCommonJSのトランスパイルができるようになった
2017年頃、モダンブラウザではES Modulesが使えるようになった
2017年のNode.js v8.5.0ES Modulesがexperimentalとしてリリース
2019年頃、Node.js v13.2.0でexperimentalが外れ、正式にES Modulesが使えるようになった







SWCinitial commitは意外と古く2017/12/22とか
よく使われるようになったのは2021年頃とかかな

今後、ESModuleが主流になれば、Webpackは死んでくれるのか?
というかこの辺のmodule system周りのぐちゃぐちゃは全部消えてくれるのか?
世界はシンプルになろうとしているのか?ということを知りたい


参考
JSの20年の歴史
189ページのPDF
シリーズ
何記事かに渡ってJSの辿ってきた流れがわかる