Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过一系列文件了解ES6中的导入/导出_Javascript_Ecmascript 6 - Fatal编程技术网

Javascript 通过一系列文件了解ES6中的导入/导出

Javascript 通过一系列文件了解ES6中的导入/导出,javascript,ecmascript-6,Javascript,Ecmascript 6,当我有3个文件时,我在理解导出/导入机制方面有点困难,每个文件都包括上一个文件 例如: //fileA.js: export default MyClass {} //fileB.js: import MyClass from './fileA.js'; //fileC.js: import './fileB.js'; 我的期望是,MyClass可以在fileC中使用,但看起来情况并非如此。你能给我一些建议吗?请按照下面的建议做: //fileA.js: export default My

当我有3个文件时,我在理解导出/导入机制方面有点困难,每个文件都包括上一个文件

例如:

//fileA.js:
export default MyClass {}

//fileB.js:
import MyClass from './fileA.js';

//fileC.js:
import './fileB.js';
我的期望是,
MyClass
可以在fileC中使用,但看起来情况并非如此。你能给我一些建议吗?

请按照下面的建议做:

//fileA.js:
export default MyClass {}

//fileB.js:
export { default as MyClass } from './fileA'

//fileC.js:
import { MyClass } from './fileB'

当您导入这样的模块时:

//fileC.js:
import './fileB.js';
它实际上并不导入任何值。它将在该模块中执行全局代码以产生副作用,但不会导入值本身。为了完成您想做的事情,您需要在每个要使用模块值的文件中导入模块值


请参见以下代码中的

//fileA.js:
export default MyClass {}

//fileB.js:
import MyClass from './fileA.js';

//fileC.js:
import './fileB.js';
Myclass
仅在fileB中可用,因为这是直接导入的。您的第3行代码不会加载到fileA中。仅仅因为FileA加载在FileB中并不意味着当我们在FileC中导入B时,依赖关系会被转移

为了使其可用,我们必须像在文件B中一样在文件C中再次导入它:

import MyClass from './fileA.js';
其他
导入
导出
语法: 当一个文件导出多个内容(前面没有默认值)时,我们可以使用命名导出将其导入,例如:

export class1 {}

export class2 {}
我们正在导出2个类,我们可以使用以下语法导入它们:

import {class1, class2} from './fileA.js';
请记住,名称现在必须与导出的名称匹配,在本例中为
class1
class2

我们还可以通过以下方式导入文件的所有导出:

import * as classes from './fileA.js';

classes.class1 // the way to access class1

此语法将所有导出放在一个对象上,我们可以确定该对象的名称(在
as
关键字之后)。然后,我们可以像通常访问对象的属性一样访问导出。

可能的重复,因此在fileC中,我需要手动指定所有导入的实体?是的,您可以使用逗号导入它们:
{Class1,Class2,Class3}