首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取React和ReactDOM的ES6模块?

如何获取React和ReactDOM的ES6模块?
EN

Stack Overflow用户
提问于 2018-08-09 19:23:33
回答 2查看 4.1K关注 0票数 14

我不打算使用WebPack捆绑的js文件,而是以ES6的方式原生地import React ES6模块。

下面是用JSX或TSX编写的典型代码,或者仅仅是ES6。

代码语言:javascript
复制
import * as React from 'react';
import * as ReactDOM from 'react-dom';

所以,我调查了./node_modules/reactreact-dom

有两个名为cjsumd的目录,每个目录都包含react.development.jsreact.production.min.js

很公平,所以调查档案,

cjs用于CommonJS module.exports /require模块。

umd是通用模块定义,看起来像是通过Babel插件transform-es2015-modules-umd使用的。

在这两个文件中,它们都不是ES6模块,对我来说,无法找到以下模块文件是非常尴尬的情况:

代码语言:javascript
复制
import * as React from 'react';
import * as ReactDOM from 'react-dom';

如何获取React和ReactDOM的ES6模块??

有没有什么方法可以使用Babel的eco甚至TypeScript中的工具来生成ES6模块?

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2019-03-05 21:10:43

2021-04-11更新:

https://github.com/facebook/react/issues/11503#issuecomment-662647468是丹·阿布拉莫夫从2020-07-22发布的更新,其中提到了新的https://reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html。有了新的转换,导入React的默认导出的理由就少了很多。

实际的第一方React ESM可能会在React 17 drops之后发生。

除了清理未使用的导入外,这还将帮助您为React的未来主要版本(而不是React 17)做准备,该版本将支持ES模块,并且没有默认导出。

旧版应答

2017年11月9日Dan Abramov said

目前我们只发布所有包的CommonJS版本。然而,我们可能希望在将来将它们作为ESM发货(#10021)。

我们不能很容易地做到这一点,因为我们还没有真正决定每个包的顶级ES导出是什么样子的。例如,React是否有一堆已命名的导出,但也有一个名为react的默认导出?我们是否应该鼓励人们导入*,以便更好地摇动树木?当前导出一个类的react-test-renderer/shallow怎么办(因此会在Node中开始失败,它是否被转换为缺省导出)?

The issue referenced above是您从2017年6月21日起提出的请求。

票数 8
EN

Stack Overflow用户

发布于 2019-11-21 12:04:26

在我们等待正式的React ESM时,这里有一个相当简单但很老套的解决方案。使用React和ReactDOM的npm包附带的umd模块。用以下方式包装umd模块:

反应

代码语言:javascript
复制
let g = {}

let w = (function(){
// Standard umd module code goes here
}).bind(g)

w()

export default g.React

ReactDOM

代码语言:javascript
复制
import React from './react'

let g = {React: React}

let w = (function(){
// Standard umd module code goes here
}).bind(g)

w()

export default g.ReactDOM

您可能需要修改./react导入路径,以满足服务器的要求。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51765686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档