使用 import { name } from 'module' 语法从 es module 中解构导入特定导出项。需确保源文件通过 export 声明了命名导出,且导入路径正确指向模块文件。

如何定义和导出命名变量
在源文件中,使用 export const、export function 或 export class 关键字直接声明并导出变量、函数或类。这些标识符将作为命名导出暴露给外部模块,导入方必须使用完全相同的名称进行匹配。

export const PI = 3.14159;
export function add(a, b) {
return a + b;
}
export class Calculator {
multiply(x, y) {
return x * y;
}
}
上述代码定义了三个独立的命名导出:PI、add 和 Calculator。每个导出都是独立的绑定,不依赖于默认导出。这种写法使得模块内部结构清晰,且允许按需加载所需功能。
立即学习“Java免费学习笔记(深入)”;
如何重命名导入的标识符
当导入的名称与本地作用域冲突,或希望使用更简洁的名称时,可以使用 as 关键字进行重命名。语法为 import { originalName as newName } from 'module'。这不会改变源模块中的导出名,仅在当前模块的局部作用域内生效。

// 假设源模块导出了名为 'PI' 的常量
import { PI as MathPI } from './math.js';
console.log(MathPI); // 输出 3.14159
// 也可以同时导入并重命名多个成员
import { add as sum, Calculator as Calc } from './math.js';
const result = sum(2, 3);
const calc = new Calc();
重命名操作仅影响当前文件的引用方式。如果源模块更新了导出名,所有未使用重命名的导入都会报错,而使用重命名的导入若未同步更新别名也会失效。因此,保持别名与语义一致是良好的实践。
导入未导出的私有变量会发生什么
尝试导入未在源模块中显式声明为 export 的变量会导致运行时错误。ES Modules 遵循严格的静态分析规则,导入列表中的名称必须对应源模块实际存在的命名导出。例如,若 math.js 中只导出了 PI 而未导出 E,则 import { E } from './math.js' 会抛出 SyntaxError 或 ReferenceError,具体取决于环境实现。这种机制确保了模块接口的明确性和安全性,防止意外依赖内部实现细节。


















