推荐使用命名导出(named export)方式导出 Class,如 export class Greeter { ... },以提升重构安全性、编辑器自动补全与重命名联动能力,并支持同一模块导出多个成员,避免默认导出带来的命名歧义与维护隐患。
推荐用命名导出(named export)方式导出 Class,避免使用默认导出(export default)。这能提升重构安全性、编辑器支持度和代码可读性。
直接在 Class 声明前加 export 关键字:
export class Greeter { constructor(name) { this.name = name; } greet() { return `Hello, ${this.name}!`; }}
导入时明确指定名称,语义清晰:
import { Greeter } from './greeter.js';
import Foo from './foo.js' 中 Foo 是谁?无法推断)虽然语法合法,但存在明显隐患:
立即学习“Java免费学习笔记(深入)”;
export default class Greeter { /* ... */ }
import X from './greeter' 中的 X 不会自动更新import Whatever from './greeter'),破坏可读性与协作一致性一个文件尽量只导出一个核心 Class,保持模块聚焦:
export function createGreeter(...)
#privateField)封装,不暴露 setter/getter,改用显式方法(setConfig()、getState())少量使用时直接解构导入:
import { Greeter, Logger } from './utils.js';
若一个模块导出大量相关 Class(如 UI 组件库),可用命名空间导入:
import * as UI from './ui-components.js';const btn = new UI.PrimaryButton();
UI、API、DOM)import * as x from '...' 后又手动解构(如 const { A } = x),失去命名空间优势