CommonJSは、Web ブラウザー外( Web サーバーやネイティブ デスクトップ アプリケーションなど) のJavaScriptのモジュールエコシステムを標準化するプロジェクトです。
CommonJS のモジュールの動作仕様は、Node.js を使用したサーバーサイド JavaScript で現在広く使用されています。[1]また、ブラウザーサイド JavaScript にも使用されますが、ブラウザーは CommonJS をサポートしていないため、そのコードはトランスパイラーでパッケージ化する必要があります。 [1]使用されている他の主要なモジュール仕様は、ECMAScript (ES) モジュール仕様 (ES6 モジュール、別名 ES2015 モジュール) です。[2]require() CommonJS は関数とを使用することで認識できますが、ES モジュールは同様の (ただし同一ではない) 機能のために
およびステートメントをmodule.exports使用します 。importexport
歴史
このプロジェクトは2009年1月にMozillaのエンジニアであるKevin Dangoorによって開始され、当初はServerJSと名付けられました。[3]
ここで私が説明しているのは技術的な問題ではありません。人々が集まり、一歩踏み出して、一緒に何かもっと大きくてクールなものを作り始めるという決断を下すという問題です。
— ケビン・ダンゴール[3]
2009年8月、このプロジェクトは、APIのより幅広い適用性を示すためにCommonJSに改名されました。[4]仕様はオープンプロセスで作成され、承認されます。仕様は、複数の実装によって完成されて初めて最終版と見なされます。 [5] CommonJSは、 ECMAScriptに取り組んでいるEcma InternationalグループTC39とは提携していませんが、TC39の一部のメンバーがプロジェクトに参加しています。[6]
仕様
仕様リストには以下が含まれる: [7]
現在
- モジュール/1.0 (モジュール/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
参考文献
- ^ ab Eric Elliott (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。
- ^ ab 「サーバーサイド 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: EARLY STALLED EXPLORATION」. 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 月。
