声明
declare module "MyModule" {
export function Foo() {...}
export function Bar() {...}
}
我只需要Foo,我应该如何导入它?
import * as MyModule from "MyModule";
MyModule.Foo();
或
import {Foo} from "MyModule";
Foo()
哪一个比另一个更好?以第一种方式导入所有出口是否有任何性能影响?
在发布问题之前我读过的一些参考文献:
https://www.exratione.com/2015/12/es6-use-of-import-property-from-module-is-not-a-great-plan/
答案 0 :(得分:5)
import {} from ...
语法使得对函数的存根和间谍非常困难,并且通常需要额外的库,例如rewire.js。警告是树摇动也不起作用。我倾向于保持我的util模块很小,每个模块可能只包含2-3个功能。这样我可以使用模块的import * as ...
语法和第三方模块的import {} ...
。从而最大限度地减少树木摇晃的需
答案 1 :(得分:4)
仅向代码导入必要的内容当然是良好做法。假设有人写了几千行代码导入所有内容,然后你尝试分析它。您是否认为您很容易知道代码中使用的哪些函数是导入的,哪些不是?显然这是可疑和不良做法。
关于表现,我认为影响不大。
答案 2 :(得分:1)
如果您只需要 Foo
,我认为最好只导入Foo
。这使您的代码更加清晰,因为通过查看该导入,您可以确定代码正在使用的MyModule
的哪些元素。
它不会影响性能,因为您必须阅读/下载整个文件。
此外,使用像Rollup.js这样的捆绑包时选择哪个选项并不重要 - 即使您从MyModule
导入所有内容,该捆绑包也只包含您在代码中实际使用的内容。< / p>
答案 3 :(得分:0)
如果有人还在寻找答案,我已经分享了我对此的看法。
import *
。import {}
方法。any name
”导入。