我知道有import {thing} from 'module'
或const {thing} = require('module')
,我也可以const thing = require('thing')
使用thing.method()
,但我可以通过任何可用的技巧导入所有模块中的导出(python执行import * from 'lib'
的方式),这样我就可以调用method()
而不在导入中指定它?
答案 0 :(得分:2)
可以使用语法
从模块导入所有导出import * as Utils from 'utils';
这将创建一个名为Utils
的对象,它将utils
模块的所有导出作为其属性。
在JS中,必须在该范围内显式声明范围变量。对未明确声明的变量的任何引用都假定为全局名称空间的属性。这就是像import * from 'module'
这样的语法不能像在Python中那样工作的原因。由于未单独声明单个导入,因此唯一的替代方法是将它们作为成员添加到全局命名空间(以便能够在没有命名空间前缀的情况下访问它们),这将无法使用模块。
答案 1 :(得分:0)
import *作为'module'中的方法将创建一个名为methods的对象,该对象包含模块的所有导出。无法直接导入和附加到全局命名空间。 - 非常好!