当前位置: 首页 > news >正文

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'只允许一个、导入时不加花括号

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

  • 组件:默认导出

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

http://www.xdnf.cn/news/734869.html

相关文章:

  • yolov8添加注意力机制
  • 避免空值判断
  • Fluence (FLT) 2026愿景:RWA代币化加速布局AI算力市场
  • 一、Python 常用内置工具(函数、模块、特性)的汇总介绍和完整示例
  • Go 中 `json.NewEncoder/Decoder` 与 `json.Marshal/Unmarshal` 的区别与实践
  • C++学习-入门到精通【10】面向对象编程:多态性
  • LangChain表达式 (LCEL)
  • C语言实现对哈希表的操作:插入新键值对与删除哈希表中键值对
  • 哪些岗位最易被AI替代?
  • Docker设置代理
  • ros2工程在普通用户下正常编译但root下编译无法成功也不会自动停止
  • RAG混合检索:倒数秩融合RRF算法
  • 零硬件成本玩转嵌入式通信!嵌入式仿真实验教学平台解锁STM8S串口黑科技
  • 对COM组件的调用返回错误 HRESULT E_FAIL
  • Linux操作系统之进程(四):命令行参数与环境变量
  • 统计C盘各种扩展名文件大小总和及数量的PowerShell脚本
  • << C程序设计语言第2版 >> 练习 1-23 删除C语言程序中所有的注释语句
  • Python基于Django的校园打印预约系统(附源码,文档说明)
  • 天拓四方工业互联网平台赋能:地铁电力配电室综合监控与无人巡检,实现效益与影响的双重显著提升
  • URL编码次数差异分析:一次编码 vs 二次编码
  • 【动手学深度学习】2.4. 微积分
  • Python中openpyxl库的基础解析与代码实例
  • NIO----JAVA
  • API:解锁网络世界的无限可能
  • Leetcode 340. 至多包含 K 个不同字符的最长子串
  • Java并发
  • [特殊字符] 超强 Web React版 PDF 阅读器!支持分页、缩放、旋转、全屏、懒加载、缩略图!
  • Elasticsearch的写入流程介绍
  • vscode实时预览编辑markdown
  • 树莓派安装openwrt搭建软路由(ImmortalWrt固件方案)