JavaScript导出class有三种方式:一是直接在class前加export(命名导出,需import{User});二是先定义再export{Circle,Rectangle}(支持重命名);三是export default class ApiClient(默认导出,import ApiClient即可)。

JavaScript 中导出 class 作为模块,本质和其他声明一样,用 export 标记即可。关键在于语法位置、命名规范和导入方式的匹配。
直接在 class 前加 export(推荐)
这是最清晰、最常用的方式,class 定义和导出一步完成:
- export 关键字必须写在 class 声明的最前面,且在同一行
- class 后不加分号(JS 规范中函数/类声明后不加分号)
- 导出的是“命名导出”,导入时需用花括号指定名称
示例:
// ? User.js
export class User {
constructor(name) {
this.name = name;
}
greet() {
return `Hello, ${this.name}`;
}
}
先定义再批量导出(适合多个类/变量混合)
当一个文件里有多个 class 或其他导出项时,可统一在末尾用 export { ... } 导出:
立即学习“Java免费学习笔记(深入)”;
Java开发手册规约集合,基于阿里巴巴Java开发手册(嵩山版)。 涵盖7大维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约。 当用户需要:(1) 编写或审查Java代码 (2) 检查命名/代码规范 (3) 处理异常和日志 (4) 编写单元测试 (5) 安全编码 (6) 数据库设...
- class 可以先定义,再列进 export 对象中
- 支持重命名(用 as),方便避免命名冲突或语义优化
示例:
// ? shapes.js
class Circle { /* ... */ }
class Rectangle { /* ... */ }
export { Circle, Rectangle };
// 或重命名导出
export { Circle as RoundShape, Rectangle as BoxShape };
配合默认导出(单个主类优先场景)
如果这个 class 是模块的核心出口(比如一个工具类、单例构造器),可用 export default:
- 每个文件只能有一个 default 导出
- 导入时不加花括号,名称可自定义
- 适合“一个模块一个主类”的设计,如
export default class ApiClient
示例:
// ? ApiClient.js
export default class ApiClient {
constructor(baseURL) {
this.baseURL = baseURL;
}
get(url) { /* ... */ }
}
导入时的对应写法
导出方式决定了怎么 import:
- 命名导出(如
export class User)→import { User } from './User.js' - 默认导出(如
export default class ApiClient)→import ApiClient from './ApiClient.js' - 想同时导入默认 + 命名项 →
import ApiClient, { User } from './index.js' - 全部导入为命名空间对象 →
import * as lib from './shapes.js'; lib.Circle

















