所以我知道可以用require
.
import {x} from 'x'
相当于const {x} = require('x')
。
但是呢import * from 'x'
?我能想象它被翻译成的唯一的东西是with(require('x')){... }
。
然而,with
声明是不受欢迎的,不是吗?(因为您在编译时不知道如何解析引用)
所以我知道可以用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 模块语法。默认情况下它们不可互换,尽管它们做的事情非常相似。