在 import 语句中解构导出的对象

Destructuring exported object in import statement

如果我有一个执行 export default { a: fn1, b: fn2 } 的模块,有没有办法只导入 fn1,比如 import { fn1 } from ...

不要使用默认值 使用

export { fn1, fn2 }

是的,但您必须以不同的方式导出它们。

不导出默认对象,而是导出值本身:

export { fn1, fn2 };

然后,当您导入时,使用大括号导入并使用与导出时完全相同的名称:

import { fn1, fn2 } from './mymodule.js';

那么它们将是您可以使用的单独值:

fn1();

从技术上讲,这不是解构,但看起来非常相似。

虽然 export { fn1, fn2 } 会修复您要搜索的内容,但导出和导入的方法有很多种。下面列出了其中一些。

我遇到的一篇不错的文章ES6 Modules in Depth

名称出口

export fn1;
export fn2;
// OR
export { fn1, fn2 };

import { fn1, fn2 } from '';
fn1();
// OR
import { fn1 as a, fn2 as b } from '';
a();
// OR
import * as funcs from '';
funcs.fn1();

默认导出

// ONLY ONE PER MODULE
export default fn1;

import fn1 from '';
fn1();

混合

export default fn2;

export fn1;

import fn2, { fn1 } from '';
import { default as fn2, fn1 } from ''; 
fn1();