如何在javascript/es6中导入两个同名的类?

Ant*_*ong 38 ecmascript-6

我在文件中有这两个import语句:

import Data from 'component/Data.js';
import Data from 'actions/Data.js';
Run Code Online (Sandbox Code Playgroud)

两个文件都包含一个名为的类Data.

我该如何指定哪个是哪个?我该如何避免姓名冲突?

Cod*_*gue 100

据推测component/Data,actions/Data两者都有默认出口而不是命名出口?像这样:

export default class Data {}
Run Code Online (Sandbox Code Playgroud)

如果是这种情况,那么导入器可以随意调用变量:

import Data1 from 'component/Data.js';
import Data2 from 'actions/Data.js';
Run Code Online (Sandbox Code Playgroud)

如果它们被命名为exports:

export class Data {}
Run Code Online (Sandbox Code Playgroud)

然后,您需要使用大括号as来指定源名称和目标名称:

import { Data as Data1 } from 'component/Data.js';
import { Data as Data2 } from 'actions/Data.js';
Run Code Online (Sandbox Code Playgroud)

  • 正是我正在寻找的,我尝试了 `import { Data } as Data2 from 'actions/Data.js';` 没有用,来到这里并意识到我的错误。 (3认同)

Sav*_*kar 8

编辑:根据 RGraham 的回答,更新我的回答:

你不能像这样导入它:

import {Data as D1} from 'component/Data.js';
import {Data as D2} from 'actions/Data.js';
Run Code Online (Sandbox Code Playgroud)

然后根据需要使用它:

D1.{}
D2.{}
Run Code Online (Sandbox Code Playgroud)

引用自:https : //github.com/lukehoban/es6features/blob/master/README.md/#user-content-modules