CommonJS は、 Web ブラウザー外部( Web サーバーやネイティブ デスクトップ アプリケーションなど) のJavaScriptのモジュールエコシステムを標準化するプロジェクトです。
CommonJS のモジュールの動作仕様は、現在では Node.js を使ったサーバーサイド JavaScript で広く使われています。[ 1 ]また、ブラウザサイド JavaScript にも使われていますが、ブラウザは CommonJS をサポートしていないため、そのコードはトランスパイラでパッケージ化する必要があります。 [ 1 ]その他の主要なモジュール仕様は、ECMAScript (ES) モジュール仕様 (ES6 モジュール、別名 ES2015 モジュール) です。[ 2 ]require() CommonJS は関数とを使用することで認識できますがmodule.exports、ES モジュールでは 同様の (ただし同一ではない) 機能のために importとステートメントを使用します。export
歴史
このプロジェクトは2009年1月にMozillaのエンジニアであるKevin Dangoorによって開始され、当初はServerJSと名付けられました。[ 3 ]
ここで私が説明しているのは技術的な問題ではありません。人々が集まり、一歩踏み出し、より大きく、よりクールなものを共に作り上げていくという決断です。
— ケビン・ダンゴール[ 3 ]
2009年8月、 APIの適用範囲の広さを示すため、プロジェクト名はCommonJSに変更されました。[ 4 ]仕様はオープンなプロセスで作成・承認されます。仕様は複数の実装を経て完成した後に初めて最終版とみなされます。 [ 5 ] CommonJSはECMAScriptに取り組むEcma InternationalグループTC39とは提携していませんが、TC39のメンバーの一部がプロジェクトに参加しています。[ 6 ]
仕様
仕様リストには以下が含まれる: [ 7 ]
現在
- Modules/1.0 (Modules/1.1 に置き換えられました)
- モジュール/1.1
- モジュール/1.1.1
- パッケージ/1.0
- システム/1.0
提案
提案はモジュールだけにとどまりません。Web以外のJavaScript実装にも有用なAPIセットを定義し、エコシステム内での相互運用性を確保するためにパッケージ名を標準化することを意図しています。この目標はTC39の目標と重なる部分もあり、Promisesなどの要素は実際にECMAScript自体にも取り入れられています。
スラッシュの後の部分はバージョンです。提案が競合している場合、個々の提案(同じ著者による連続した改訂版を含む)に新しい文字が割り当てられます。主要な方向性が判明すると、数値バージョンが割り当てられ始めます。
- バイナリ/B、F
- コンソール(Web から移植)
- エンコーディング/A、C
- エンコーディング/A
- HTTPクライアント/B
- IO/A
- ファイルシステム/A、A/0
- モジュール/非同期/A
- モジュール/非同期定義
- モジュール/ローダープラグイン
- モジュール/リソース
- モジュール/シンプル非同期
- モジュール/トランスポート/B、C、D、E
- モジュール/ラッピング
- モジュール/ラッピング-明示的な依存関係
- パッケージ/1.1
- パッケージ/非同期定義
- パッケージ/マッピング/A、B、C、D
- 約束/B,D
- ユニットテスト/B、1.0、1.0.1
実装
- 共通ノード[ 8 ]
- CommonJSコンパイラ - Common JSモジュールをブラウザ内での使用に適したものにするコマンドラインツール[ 9 ]
- CommonJS for PHP - PHP 5.3+ 向けの軽量な CommonJS 実装[ 10 ]
- カウチDB [ 11 ]
- フルスプフェルト[ 12 ]
- GPSEE [ 13 ]
- ジェットパック
- ジョイエントスマートプラットフォーム[ 14 ]
- JSビルド[ 15 ]
- モンゴDB [ 16 ]
- Narwhal(JavaScriptプラットフォーム)[ 17 ]
- Node.js(部分的、同期)[ 18 ]
- 忍耐する[ 19 ]
- PINF JavaScriptローダー[ 20 ]
- PythonMonkeyは、JavaScriptまたはPython(あるいは両方)で書かれたモジュールをロードできるCommonJS Modules/1.1.1環境を実装しています。[ 21 ]
- リンゴJS [ 22 ]
- シルクJS [ 23 ]
- スプラウトコア[ 24 ]
- ティーJS [ 25 ]
- ワカンダ[ 26 ]
- XULジェット[ 27 ]
- Qユニット
参照
- 非同期モジュール定義(AMD)、別のJavaScriptモジュールアーキテクチャ
- サーバーサイドJavaScriptソリューションの比較
- ドキュメント オブジェクト モデル(DOM)、JavaScript で一般的に利用できるWeb ブラウザーのクライアント側アプリケーション プログラミング インターフェイス(API)
- JSGI
参考文献
- ^ a bエリック・エリオット (2014年6月26日). 『JavaScriptアプリケーションのプログラミング:Node、HTML5、そして最新のJSライブラリによる堅牢なWebアーキテクチャ』 O'Reilly Media, Inc. pp. 87–. ISBN 978-1-4919-5027-2。
- ^ Mario Casciaro、Luciano Mammino (2020年7月29日). Node.jsデザインパターン:実証済みのパターンとテクニックを用いて、製品グレードのNode.jsアプリケーションを設計・実装する、第3版. Packt Publishing. p. 62. ISBN 978-1-83921-044-0。
- ^ a b「サーバーサイドJavaScriptに必要なもの」 . www.blueskyonmars.com . 2021年8月5日閲覧。
- ^ 「CommonJS: JavaScript 標準ライブラリ」www.commonjs.org . 2017年11月13日時点のオリジナルよりアーカイブ。2021年8月5日閲覧。
- ^ "ProposalProcess - CommonJS Spec Wiki" . wiki.commonjs.org . 2021年8月5日閲覧。
- ^ 「CommonJS:最初の1年」 . www.blueskyonmars.com . 2021年8月5日閲覧。
- ^ 「JavaScript標準ライブラリ」 . CommonJS. 2014年5月28日時点のオリジナルよりアーカイブ。2014年5月28日閲覧。
- ^ "olegp/common-node @ GitHub" . olegp.github.io . 2021年8月5日閲覧。
- ^ 「CommonJSコンパイラ - Common JSモジュールをブラウザ内での使用に適したものにします」 . dsheiko.github.io . 2021年8月5日閲覧。
- ^ 「GitHub - DrBenton/CommonJSForPHP: PHP 5.3+向けのシンプルなCommonJS仕様の実装」 GitHub . 2021年8月5日閲覧。
- ^ 「Implementations/CouchDB - CommonJS Spec Wiki」 . wiki.commonjs.org . 2021年8月5日閲覧。
- ^ 「Flusspferd - CommonJS プラットフォーム | C言語用Javascriptバインディング」。2013年1月28日時点のオリジナルよりアーカイブ。2017年9月19日閲覧。
- ^ 「Implementations/GPSEE - CommonJS Spec Wiki」 . wiki.commonjs.org . 2021年8月5日閲覧。
- ^ 「Implementations/Smart - CommonJS Spec Wiki」 . wiki.commonjs.org . 2021年8月5日閲覧。
- ^ “ホームページ - JSBuild” . 2011年1月4日時点のオリジナルよりアーカイブ。
- ^ 「モダンアプリ向けの最も人気のあるデータベース」MongoDB。2021年8月5日閲覧。
- ^ 「Implementations/Narwhal - CommonJS Spec Wiki」 . wiki.commonjs.org . 2021年8月5日閲覧。
- ^ 「Implementations/node.js - CommonJS Spec Wiki」 . wiki.commonjs.org . 2021年8月5日閲覧。
- ^ 「Implementations/Persevere - CommonJS Spec Wiki」 . wiki.commonjs.org . 2021年8月5日閲覧。
- ^ 「GitHub - pinf/loader-js: 早期停滞の探索」 . GitHub . 2021年7月30日. 2021年8月5日閲覧。
- ^ 「Distributive-Network/PythonMonkey: Python VMに埋め込まれたMozilla SpiderMonkey JavaScriptエンジン。Pythonエンジンを使用してJSホスト環境を提供します」。GitHub 。2023年7月7日。2023年7月10日閲覧。
- ^ 「Implementations/RingoJS - CommonJS Spec Wiki」 . wiki.commonjs.org . 2021年8月5日閲覧。
- ^ 「SilkJS WWWサイト」 。 2017年9月12日時点のオリジナルよりアーカイブ。2012年10月19日閲覧。
- ^ 「Implementations/SproutCore - CommonJS Spec Wiki」 . wiki.commonjs.org . 2021年8月5日閲覧。
- ^ 「Implementations/TeaJS - CommonJS Spec Wiki」 . wiki.commonjs.org . 2021年8月5日閲覧。
- ^ SAS、Wakanda。「Wakanda FullStack JavaScript プラットフォーム」。Wakanda FullStack JavaScript プラットフォーム。2021年8月5日閲覧。
- ^ 「Google Code アーカイブ - Google Code プロジェクト ホスティング用の長期ストレージ」 . code.google.com . 2021年8月5日閲覧。
外部リンク
- 公式サイト
- 「CommonJSの取り組みがJavaScriptを世界制覇の道へ導く」 Ars Technica 2009年12月