在 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();
如果我有一个执行 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();