我用 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
文件夹,里面有很多JavaScript文件。
对我来说,它无法找到两个文件夹中文件之间的差异。
像这样:
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 应用程序或网站。
最佳答案
JavaScript 最初仅用于交互式浏览器。对于 NodeJS,它用于非浏览器上下文。由于这个和其他因素,模块存在不兼容的格式:
“CommonJS ” 规范描述了
exports
对象的使用,该对象是用于声明和发现从模块导出的名称的 API。不允许在交互式浏览器中加载 CommonJS 模块。 NodeJS 是最流行的 CommonJS 格式实现。“Asynchronous Module Definition ”(AMD)描述了如何在假设它们将被加载到交互式浏览器中的情况下捆绑 JavaScript 模块。 RequireJS 是更流行的模块支持库之一,它使用 AMD 模块。
由于 AMD 和 CommonJS 都非常流行并且彼此之间无法理解,“Universal Module Definition ” (UMD) 是一种模式,可以制作一个可以被两者使用的模块,但代价是格式更复杂。
最近,ECMAScript 2015 defines
export
andimport
syntax (与上述所有不同)以支持模块。
您应该使用哪个?您需要根据构建系统中将使用这些模块的内容来回答这个问题。
今天(2022 年 2 月),最有可能的答案是:使用 ECMAScript 模块,这些模块现已支持多年,在 NodeJS 中和 major browsers .
如果您需要支持非常过时的 JavaScript 引擎,您可能需要一种较早的格式,但您应该有一个时间表来放弃对这些引擎的支持。
关于javascript - UMD 和 CommonJS (CJS) 包文件夹有何不同,我应该使用哪个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51233240/