如何从名称空间导出,访问默认值?

How do I export from a namespace, accessing the default?

我有一个关于 ES6 导入模块的问题。

我试图在我的 Three.js 代码中添加 OrbitControls。 由于 OrbitControls 是一个单独的模块,我需要在我的代码中单独导入它们,如下所示。并且工作正常。

import OrbitControls from 'three-orbitcontrols'

不过,

我最先想到的是

import {OrbitControls} from 'three-orbitcontrols'

原因是,
据我了解,如果模块将某些内容导出为导出默认值,
我可以通过在我的 'import' 代码中加上大括号来访问它们。
但是,它没有成功,所以我假设 'three-orbitcontrols' 不会默认导出“OrbitControls”。

然后我就这样试了

import * as Orbit from 'three-orbitcontrols'

new Orbit.OrbitControls(a,b)

然而,也没有成功。

我误会了什么?

导入时使用大括号从其他文件导入 命名导出 。比如下面的link向上:

export const foo = 'something';
import { foo } from './somefile.js';

默认导出不使用花括号:

export default 'somethingelse';
import theSomethingElse from './someOtherFile.js';

听起来 OrbitControls 使用默认导出,因此导入时应避免大括号。

正在做

import * as Orbit from 'three-orbitcontrols'

imports everything 模块作为命名空间导出,本质上是一个对象。要从命名空间访问默认导出,请访问其上的 default 属性:

import * as Orbit from 'three-orbitcontrols'

new Orbit.default(a,b)

(或者只使用您的原始版本:import OrbitControls from 'three-orbitcontrols'