UMD和CommonJS(CJS)包文件夹有何不同,我应该使用哪些?

问题描述 投票:4回答:1

我用package.json安装了reactjs和react-dom

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

它正确下载了react文件夹和react-dom文件夹。

这两个文件夹都有cjs和umd文件夹,它们有很多js文件。

对我来说,它无法找到两个文件夹中的文件之间的差异。

像这样:

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文件夹,我不知道应该从哪个文件夹中使用哪个文件来开发反应应用程序或网站。

reactjs npm react-dom
1个回答
6
投票

JavaScript最初仅用于交互式浏览器。使用Node,它可以在非浏览器上下文中使用。由于这个和其他因素,模块的格式不兼容:

  • CommonJS”规范描述了exports对象的使用,该对象是用于声明和发现从模块导出的名称的API。不允许在交互式浏览器中加载CommonJS模块。 NodeJS是CommonJS格式中最流行的实现。
  • Asynchronous Module Definition”(AMD)描述了如何捆绑JavaScript模块,假设它们将在交互式浏览器中加载。 RequireJS是最受欢迎的模块支持库之一,它使用AMD模块。
  • 因为AMD和CommonJS都非常受欢迎并且相互之间难以理解,所以“Universal Module Definition”(UMD)是一种模式,它试图制造一个可以被两者使用的模块,代价是更复杂的格式。
  • 除了以上所有,ECMAScript 2015 defines export and import syntax(不同于以上所有)支持模块。

你应该用哪个?您需要根据构建系统中消耗这些模块的内容来回答这个问题。

今天,最可能的答案是:使用UMD模块。将来的某个时候可能是:使用ECMAScript模块;但我们还没有(2019年)就如何分配这些问题达成共识。

© www.soinside.com 2019 - 2024. All rights reserved.