web-dev-qa-db-ja.com

UMDとCommonJS(CJS)のパッケージフォルダーはどのように違うのですか、どちらを使用すればよいですか?

私はreactjsをインストールし、package.jsonでこのようにreact-domを実行しました

"dependencies": {
   "bootstrap": "^v4.1.1",
   "popper.js": "^1.14.3",
   "react": "^v16.4.1",
   "react-dom": "^16.4.1"
}

反応フォルダと反応DOMフォルダを正しくダウンロードしました。

両方のフォルダーにはcjsフォルダーとumdフォルダーがあり、多数のjsファイルがあります。

私にとっては、2つのフォルダー内のファイルの違いを見つけることができません。

このような:

URL: node_modules/react/umd
  react-development.js
  react-production.min.js



URL : node_modules/react/cjs
   react-development.js
   react-production.min.js

react-domとほぼ同じです。また、cjsとumdフォルダーがあり、reactアプリケーションまたはWebサイトの開発にどのフォルダーのどのファイルを使用すればよいかわかりません。

16
kust kust

JavaScriptはもともとインタラクティブなブラウザ専用でした。ノードでは、ブラウザ以外のコンテキストで使用されます。これと他の要因のため、モジュールには互換性のない形式があります:

  • CommonJS ”仕様は、モジュールからエクスポートされる名前を宣言および検出するためのAPIであるexportsオブジェクトの使用について説明しています。 CommonJSモジュールを対話型ブラウザーにロードすることはできません。 NodeJSは、CommonJS形式の最も一般的な実装です。

  • 非同期モジュール定義 」(AMD)は、インタラクティブなブラウザに読み込まれることを前提にJavaScriptモジュールをバンドルする方法を説明しています。 RequireJSは、最も人気のあるモジュールサポートライブラリの1つであり、AMDモジュールを使用します。

  • AMDとCommonJSは両方とも非常に人気があり、相互に理解できないため、「 niversal Module Definition 」(UMD)は、両方で消費できるモジュールを作成しようとするパターンですが、より複雑なフォーマットの。

  • 最近では、モジュールをサポートするために ECMAScript 2015はexportおよびimport構文を定義しています (上記とは異なります)。

あなたはどちらを使うべきですか?ビルドシステムの何がそれらのモジュールを消費するかに基づいて、それに答える必要があります。

今日、最もありそうな答えは:UMDモジュールを使用する。 ECMAScriptモジュールを使用する。しかし、それらがどのように配布されるかについては、まだ合意していません(2019)。

16
bignose