我遇到了这种区别,在ExploringJS中没有很好地解释
合格和不合格的进口以相同的方式工作(它们都是间接的)
有什么区别,因此这个陈述是什么意思?
var foo = require('a').foo // doesn't work with cyclic dependencies
import {foo} from 'a' // can work with cyclic dependencies*
var a = require('a')
function bar() {
a.foo() // can work with cyclic dependencies*
}
exports.bar = bar
import * as a from 'a'
export function bar() {
a.foo() // can work with cyclic dependencies*
}
在 ES2015 中,默认导入也可以是合格的导入(尽管有些人不同意),如果它们用作命名空间:
export default {
fn1,
fn2
}
*使用循环依赖,您不能访问模块主体中的导入:
import {foo} from 'a' // 'a' is a cyclic dependency
foo() // doesn't work