Skip to content

import 导入

导入的值不能被重新分配,尽管导入的对象和数组 可以被 mutated(并且导出模块和任何其他导入将受到 mutation 的影响)。也就是说,它们的行为类似于 const 声明。

具名导入

使用源模块中的原始名称进行导入。

js
import { something } from './module.js'

从源模块导入特定项目,并在导入时分配自定义名称。

js
import { something as somethingElse } from './module.js'

名称空间导入

将源模块中的所有内容作为一个对象导入,该对象将所有源模块的 named exports 公开为属性和方法。

js
import * as module from './module.js'

从上面的示例中,something 将作为属性附加到导入的对象上,例如 module.something。如果存在默认导出,则可以通过 module.default 访问它。

默认导入

导入源模块的 default export

js
import something from './module.js'

默认导出的值可以用任何合法的标识符命名,不需要与模块内部的导出名称一致。

若想要 重命名 时直接赋予导入的“默认导出”一个新变量名称即可:

js
import newName from './module.js'

newName() // 输出: Hello, world!
js
export default function greet() {
  console.log('Hello, world!')
}

你可能会看到另一种写法

js
import { default as newName } from './module.js'
  • default 是默认导出的占位符:模块可以有一个默认导出,default 关键字表示导入的默认值。
  • 重命名默认导出: import { default as alias } 是一种重命名默认导出的方式,其中 alias 是新名称。

建议直接为“默认导出”进行重命名!

提示

如果需要同时导入“默认导出”和“具名导出”,可以使用以下方式:

js
import newName, { name as renamedName } from './module.js'

newName() // 输出: Hello, world!
console.log(renamedName) // 输出: Module
js
export default function greet() {
  console.log('Hello, world!')
}

export const name = 'Module'

无命名导入

加载模块代码,但不要使任何新对象可用。

js
import './module.js'

这对于 polyfill 很有用,或者当导入代码的主要目的是处理 prototypes 时。

动态导入

使用 动态导入 API 导入模块。

js
import('./modules.js')
  .then(({ default: DefaultExport, NamedExport }) => {
    // 用这个模块做点什么...
  })
  .catch(error => {
    // 处理导入错误
  })

这对于代码分解应用程序和动态使用模块非常有用。

基于 MIT 许可发布