JavaScript中的命名导出(暴露)

在 JavaScript / React 中,"分别暴露 "和"统一暴露"是两种常用的模块导出方式。下面我来清晰地解释它们的区别,并给出示例:


✅ 一、分别暴露(命名导出)

每个变量或函数分别用 export 导出。

📦 示例:

复制代码
// utils.js
export const sum = (a, b) => a + b;
export const multiply = (a, b) => a * b;

✅ 导入方式:

复制代码
import { sum, multiply } from './utils';

✅ 特点:

  • 可以只导入其中一部分:

    复制代码
    import { sum } from './utils';
  • 必须使用原名称导入 ,除非使用 as 重命名:

    复制代码
    import { sum as add } from './utils';

✅ 二、统一暴露(也是命名导出)

先定义,再统一用 export {} 导出。

📦 示例:

复制代码
// utils.js
const sum = (a, b) => a + b;
const multiply = (a, b) => a * b;

export { sum, multiply };

✅ 导入方式:

复制代码
import { sum, multiply } from './utils';

✅ 特点:

  • 功能和"分别暴露"一样,只是语法结构不同。

  • 统一书写更方便管理导出列表。


✅ 三、默认暴露(default export)

每个模块只能有一个 export default

📦 示例:

复制代码
// MyComponent.jsx
export default function MyComponent() {
  return <div>Hello</div>;
}

✅ 导入方式:

复制代码
import MyComponent from './MyComponent';

✅ 特点:

  • 导入时可以使用任意名称(默认导出不需要花括号):

    复制代码
    import Anything from './MyComponent'; // 合法

✅ 四、混合使用(不推荐)

复制代码
// utils.js
export const sum = () => {};
export default function main() {}

可以这样导入:

复制代码
import main, { sum } from './utils';

👉 尽量避免这样写,容易引起混淆。


✅ 总结表格:

类型 写法示例 导入方式 特点
分别暴露 export const a = 1; import { a } from './x' 可多次写、导入时必须加花括号
统一暴露 export { a, b }; import { a } from './x' 统一管理、导入规则同分别暴露
默认暴露 export default function() {} import x from './x' 只允许一个、导入时不加花括号

如果你是写组件库或者模块工具,推荐使用:

  • 组件:默认导出

  • 工具函数:命名导出(统一导出更整洁)

相关推荐
Nymph_Zhu1 分钟前
vue3+element-plus 文件上传
前端·typescript·vue3·element-plus
echome8888 分钟前
CSS 布局:Flex 和 Grid 怎么选,附常见坑
前端·css·html
计算机魔术师14 分钟前
科技巨头砸7400亿押注AI,为什么苹果成了唯一赢家?
前端
系统集成-鹰翔22 分钟前
ERP推单数据库怎么备份:SQLite WAL模式下只复制db文件为什么可能漏任务
javascript·数据库·经验分享·后端
QianhangQianping23 分钟前
撤销重做不是「存快照」:一个可视化编辑器的Operation 设计
java·前端·数据库·typescript·编辑器·前端架构·撤销重做
Nymph_Zhu1 小时前
pdf转换markdown预览及内容互相点击定位
前端·pdf·vue3·markdown·element-plus
计算机魔术师1 小时前
Google 一天蒸发5000亿,Reddit 靠 AI 训练喂得饱自己却饿死
前端
小大宇1 小时前
Vue知识点-ElementPlus-05 输入框
前端·javascript·vue.js
外贸GEO优化2 小时前
外贸独立站的可抓取性:JS 渲染、懒加载与无限滚动到底影响什么
开发语言·javascript·ecmascript
l1m0_2 小时前
AI设计工具有哪些?Paico、Pixso AI、墨刀AI、Lovable、Codex怎么选
前端·人工智能·ai·设计·墨刀·codex·pixso