7 node.js typescript ecmascript-6 reactjs webpack
我不打算使用WebPack捆绑的js文件,而是以import
ES6方式本机使用React ES6模块。
这是JSX,TSX或ES6中的典型代码。
import * as React from 'react';
import * as ReactDOM from 'react-dom';
Run Code Online (Sandbox Code Playgroud)
因此,我进行了调查./node_modules/react
和react-dom
。
有两个名为cjs
和的目录umd
,每个目录都包含react.development.js
和react.production.min.js
。
足够公平,因此要调查文件,
cjs
用于CommonJS module.exports
/ require模块。
umd
是通用模块定义,看起来可以通过Babel插件使用transform-es2015-modules-umd
。
在这两个文件中,它们都不是ES6模块,对我来说,无法找到以下模块文件是非常尴尬的情况:
import * as React from 'react';
import * as ReactDOM from 'react-dom';
Run Code Online (Sandbox Code Playgroud)
如何获得React和ReactDOM的ES6模块?
是否有使用Babel eco或TypeScript中的工具生成ES6模块的方法?
谢谢。
2021-04-11 更新:
https://github.com/facebook/react/issues/11503#issuecomment-662647468是 Dan Abramov 于 2020 年 7 月 22 日的更新,其中提到了新的https://reactjs.org/blog/2020/09/22 /introducing-the-new-jsx-transform.html。有了新的转换,导入 React 的默认导出的理由就少了很多。
真正的第一方 React ESM 分发可能发生在 React 17 发布之后。
除了清理未使用的导入之外,这还将帮助您为未来的 React 主要版本(不是 React 17)做好准备,该版本将支持 ES 模块并且没有默认导出。
较旧的答案
2017 年 11 月 9 日,丹·阿布拉莫夫说:
目前我们只提供所有包的 CommonJS 版本。但是,我们可能希望将来将它们作为 ESM 发布 (#10021)。
我们不能很容易地做到这一点,因为我们还没有真正决定每个包的顶级 ES 导出是什么样的。例如,react 是否有一堆命名导出,还有一个名为 React 的默认导出?我们是否应该鼓励人们导入 * 以获得更好的摇树效果?当前导出类的 react-test-renderer/shallow 怎么样(如果它转换为默认导出,那么在 Node 中会开始失败)?
上面提到的问题是对您自 2017 年 6 月 21 日起提出的要求的请求。
归档时间: |
|
查看次数: |
1099 次 |
最近记录: |