javascript中导出基础类推荐命名导出,工厂方法必须命名导出,可组合导出类、函数与常量;注意一个模块仅允许一个默认导出,路径需带.js扩展名。

在 JavaScript 中,用 export 导出基础类和工厂方法非常直接,关键在于区分“命名导出”和“默认导出”,并确保导出的是可被外部正确引用的值。
导出基础类(命名或默认均可)
类本质是函数,可像普通值一样导出。推荐使用命名导出,便于多人协作时清晰识别:
// math-utils.js
export class Calculator {
constructor() {
this.history = [];
}
add(a, b) {
const result = a + b;
this.history.push(`${a} + ${b} = ${result}`);
return result;
}
}
<p>// 也可同时默认导出一个实例(按需)
export default class MathHelper {
static pi = Math.PI;
static round(x, digits = 0) {
const d = Math.pow(10, digits);
return Math.round(x * d) / d;
}
}</p>使用时对应导入:
// app.js
import { Calculator } from './math-utils.js';
import MathHelper from './math-utils.js'; // 默认导入
<p>const calc = new Calculator();
console.log(MathHelper.round(3.14159, 2)); // 3.14</p>导出工厂方法(必须命名导出)
工厂方法是返回新对象/实例的函数,不能作为默认导出(除非你明确只提供这一个功能),通常用命名导出更合理:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
// user-factory.js
export function createUser(name, email) {
return {
name,
email,
getId() {
return Math.random().toString(36).substr(2, 9);
}
};
}
<p>export function createAdmin(name, email, role = 'super') {
const user = createUser(name, email);
return {
...user,
role,
permissions: ['read', 'write', 'delete']
};
}</p>导入后直接调用:
// app.js
import { createUser, createAdmin } from './user-factory.js';
<p>const user = createUser('Alice', 'a@example.com');
const admin = createAdmin('Bob', 'b@example.com');</p>组合导出:类 + 工厂 + 常量
一个模块常混合多种导出。可用 export { ... } 统一列出,提升可读性:
// api-client.js
class ApiClient {
constructor(baseURL) {
this.baseURL = baseURL;
}
request(endpoint) {
return fetch(this.baseURL + endpoint);
}
}
<p>function createJsonClient(url) {
return new ApiClient(url + '/api/json');
}</p><p>function createXmlClient(url) {
return new ApiClient(url + '/api/xml');
}</p><p>const DEFAULT_TIMEOUT = 5000;</p><p>// 一次性导出多个
export { ApiClient, createJsonClient, createXmlClient, DEFAULT_TIMEOUT };</p>导入时按需选择:
import { ApiClient, createJsonClient, DEFAULT_TIMEOUT } from './api-client.js';注意点与常见陷阱
-
工厂方法不能直接 default 导出多个:一个模块只能有一个
export default,若需多个工厂,必须用命名导出 - 类内部不能用未声明的变量:工厂中返回的类实例,其属性/方法需在类定义内完整声明,否则导入后可能报错
- 避免导出匿名函数或类:命名导出时,尽量让名称与变量名一致,方便调试和 tree-shaking
-
ESM 环境下路径必须带扩展名:Node.js 或现代浏览器中,
import路径如./utils会报错,应写为./utils.js
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










