6

我遇到了这种区别,在ExploringJS中没有很好地解释

合格和不合格的进口以相同的方式工作(它们都是间接的)

有什么区别,因此这个陈述是什么意思?

4

1 回答 1

3

严格来说,JavaScrpit 中没有合格/不合格的导入。这些术语在 Axel Rauschmayer 博士的“探索 ES6”一书中在循环依赖的背景下使用,大致意思是:

不合格导入(直接导入模块的一部分):

CommonJS

var foo = require('a').foo // doesn't work with cyclic dependencies

ES2015

import {foo} from 'a' // can work with cyclic dependencies*

合格的导入(将整个模块作为命名空间导入):

CommonJS

var a = require('a')
function bar() {
  a.foo() // can work with cyclic dependencies*
}
exports.bar = bar

ES2015

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
于 2016-09-09T14:44:37.130 回答