ES6 import语句不支持直接解构重命名,需通过命名导入+解构赋值两步实现;重命名应在导出端用as完成;默认导出为对象时可直接解构。

ES6 模块的 import 语句本身不支持直接进行对象解构(比如 import { a: x, b: y } from './mod.js' 这种写法是非法的),但可以通过“命名导入 + 解构赋值”两步完成等效效果——即先按名导入,再在后续代码中解构。
命名导入必须严格匹配导出名
使用大括号的 import { ... } 是“命名导入”,它要求花括号内的标识符与模块 export 的名称完全一致(不能是别名,除非导出时用了 as):
export const name = 'Alice'; export const age = 30;- 合法导入:
import { name, age } from './user.js'; - ❌ 错误写法:
import { name: userName } from './user.js';(语法报错)
想重命名?导出端用 as,不是导入端
如果希望在导入后使用不同变量名,应在导出时通过 as 指定别名,而不是在 import 中解构重命名:
- 导出端:
export { name as userName, age as userAge }; - 导入端:
import { userName, userAge } from './user.js'; - 这样
userName就是原name的引用,无需额外解构
导入后立即解构是常见且推荐的做法
虽然 import 语句不能解构,但可以在导入后立刻用解构赋值提取并重命名,逻辑清晰、语义明确:
import { name, age, role } from './user.js';const { name: fullName, age: years, role: position } = { name, age, role };- 或更简洁地合并为一行:
const { name: fullName, age: years, role: position } = await import('./user.js');(动态导入场景)
默认导入可直接解构,但需注意是对象
如果模块用 export default { name, age } 导出一个对象,那么默认导入得到的就是该对象,此时可以对其解构:
- 导出端:
export default { name: 'Bob', age: 25 }; - 导入端:
import user from './user.js'; const { name, age } = user; - 也可一步写成:
const { name, age } = (await import('./user.js')).default;
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











