javascript中import通过命名导入语法按需加载es module具名导出成员,支持重命名、混合导入默认与具名导出,以及动态import()按需加载,但必须顶层声明且路径为字符串字面量。

在 JavaScript 中,使用 import 导入指定的 ES Module 成员,核心是通过命名导入(named import)语法,只加载模块中实际需要的导出项,避免引入整个模块,提升可读性和打包效率。
导入单个或多个具名导出成员
当模块使用 export 显式导出变量、函数或类(如 export const a = 1; 或 export function foo() {}),可在导入时用大括号指定名称:
-
import { foo, bar } from './utils.js';—— 导入两个具名导出 -
import { calculateTotal as calc } from './math.js';—— 导入并重命名(避免命名冲突) -
import { default as MyComponent } from './Component.js';—— 导入默认导出并重命名(不常用,但合法)
同时导入默认导出和具名导出
一个模块可以同时有 export default 和多个 export。此时需在同一个 import 语句中组合使用:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
import React, { useState, useEffect } from 'react';—— 默认导出(React)在前,具名导出在后,用逗号分隔 - 注意:默认导入部分不能加花括号,具名部分必须加
动态导入:按需加载指定成员(进阶)
若需在运行时条件性导入,可用 import() 动态导入,它返回 Promise。虽然它默认导入整个模块对象,但可通过解构提取所需成员:
const { fetchData } = await import('./api.js');const module = await import('./utils.js'); const { debounce } = module;- 适用于代码分割、路由懒加载等场景
注意事项与常见误区
导入语句必须位于模块顶层(不能在函数或条件块内),且路径必须是字符串字面量(不能拼接变量):
- ✅ 正确:
import { log } from './debug.js'; - ❌ 错误:
if (DEBUG) import { log } from './debug.js';(语法错误) - ❌ 错误:
const path = './debug.js'; import { log } from path;(路径非字面量) - 导入名称必须与导出名称完全一致(区分大小写)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










