所以我知道导入可以用require
代替。
import {x} from 'x'
相当于const {x} = require('x')
。
但是import * from 'x'
呢? 我唯一能想象它被翻译成的就是with(require('x')){... }
。
然而,with
声明是不受欢迎的,不是吗?(因为您不知道在编译时如何解析引用)
import * from "x";
不是有效的 JS。
import * as x from "x";
是。
这与
import x from "x";
?
好吧,后者要求您具有默认导出,而前者则采用所有导出并将它们分组到一个对象中。
我认为您的语法混淆了。这:
import * from 'x'
无效。您可以做的是:
import * as x from 'x';
这会将x
文件中的所有导出放入命名空间(在大多数情况下,它只是一个 JavaScript 对象,其属性和default
对应于导出的名称)。导入的x
标识符引用此命名空间。
也
import {x} from 'x'
相当于const {x} = require('x').
不正确 -require
是 CommonJS 语法,import
/export
是 ES6 模块语法。默认情况下,它们不可互换,尽管它们执行非常相似的事情。