es6模块化中export分命名导出和默认导出两类:命名导出可多次、需花括号按名导入,适用于工具函数等;默认导出每模块仅一个、导入名自定,适合主功能;二者可混合使用,且export只能在顶层声明。

ES6 模块化中,export 用于把变量、函数、类等公开出去,让其他模块能通过 import 使用。导出方式主要分两类:命名导出和默认导出,适用场景和写法不同。
命名导出(可多次,需按名导入)
适合导出多个内容,比如工具函数集合、配置常量等。导入时必须用花括号,并且名称要一致。-
在声明时直接加
exportexport const PI = 3.14159; export function add(a, b) { return a + b; } export class Calculator { /* ... */ } -
先定义,再统一导出(推荐用于整理逻辑)
const API_URL = 'https://api.example.com'; const TIMEOUT = 5000; function fetchUser(id) { /* ... */ } export { API_URL, TIMEOUT, fetchUser }; -
导出时重命名(解决命名冲突或增强语义)
Javascript Sdk下载用于 inference.sh 的 JavaScript/TypeScript SDK,可运行 AI 应用、构建代理、集成 150+ 模型。包名:@inferencesh/sdk(npm install),完整 TypeScript 支持。
function internalHelper() { /* ... */ } export { internalHelper as helper };
默认导出(每个模块仅一个,导入名可自定)
适合导出模块的“主功能”,比如一个核心类、主工具函数或配置对象。导入时不加花括号,名字随意。-
直接导出匿名函数或值
export default function(url) { return fetch(url); } export default { theme: 'dark', lang: 'zh-CN' }; -
先定义再默认导出
const App = { init() { console.log('start'); } }; export default App;
混合导出(命名 + 默认一起用)
一个模块可以同时有命名导出和默认导出,互不干扰。// utils.js
export const VERSION = '2.1.0';
export function log(msg) { console.info(msg); }
export default function main() { console.log('running'); }
对应导入写法:
import main, { VERSION, log } from './utils.js';
注意:export 只能出现在模块顶层,不能在条件语句或函数内部;导出的必须是声明(const/let/var、函数声明、类),不能是表达式或字面量直接导出(如 export 42 会报错)。










