【JS】export default 🆚 export

语法都正确,但导出方式不同,导入方式也不同,尤其在React和懒加载中区别很大

🆚对比讲解

写法 类型 导入方式 用在 React.lazy?
export default function MyComponent() 默认导出 import MyComponent from './MyComponent' 可以直接用
export function MyComponent() 具名导出 import { MyComponent } from './MyComponent' 不能直接用 (除非包 .then()

导入时别名区别

导出类型 导入时能重命名吗? 示例
默认导出 ✅ 可以随便命名 import A from '...'
具名导出 ✅ 使用 as import { X as Y } from '...'

✅ 1. export default function MyComponent() { ... }

  • 这是默认导出
  • 每个模块只能有一个默认导出。
  • 用法简单,适合 React 组件默认输出。
js 复制代码
// MyComponent.js
export default function MyComponent() {
  return <div>你好</div>;
}

导入方式:

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

用于懒加载:

js 复制代码
const MyComponent = React.lazy(() => import('./MyComponent')); // ✅ 直接用

✅ 2. export function MyComponent() { ... }

  • 这是具名导出
  • 一个文件可以导出多个具名变量或函数。
  • 更灵活,但懒加载时要做额外处理。
js 复制代码
// MyComponent.js
export function MyComponent() {
  return <div>你好</div>;
}

导入方式:

js 复制代码
import { MyComponent } from './MyComponent';

如果你要懒加载这个具名导出组件,需要手动指定 default:

js 复制代码
const MyComponent = React.lazy(() =>
  import('./MyComponent').then(module => ({ default: module.MyComponent }))
); // ✅ 可以,但稍麻烦

什么时候用哪个?

场景 推荐用法
单个 React 组件一个文件 export default(更常见)
多个工具函数 / 多个组件一起导出 export { A, B }(具名导出)
想用 React.lazy 简化写法 export default 更方便
相关推荐
之歆21 小时前
DAY_12JavaScript DOM 完全指南(二):实战与性能篇
开发语言·前端·javascript·ecmascript
发现一只大呆瓜21 小时前
Vite凭什么这么快?3分钟带你彻底搞懂 Vite 热更新的幕后黑手
前端·面试·vite
Maimai1080821 小时前
React如何用 @microsoft/fetch-event-source 落地 SSE:比原生 EventSource 更灵活的实时推送方案
前端·javascript·react.js·microsoft·前端框架·reactjs·webassembly
candyTong1 天前
Claude Code 的 Edit 工具是怎么工作的
javascript·后端·架构
Patrick_Wilson1 天前
知识沉淀的四层模型:从个人笔记到企业资产,让文档真正长出复利
面试·程序员·ai编程
橙序员小站1 天前
人人都在鼓吹的OPC,我想给你泼盆冷水
面试·创业
卡卡军1 天前
agmd 1.0 重磅升级——Rust 重写,性能起飞
javascript·rust
Larcher1 天前
🔥 告别抓瞎:用 Claude Code (cc) 优雅接手与维护已有项目
javascript·机器学习·前端框架
JYeontu1 天前
轮播图不够惊艳?试下这个立体卡片轮播图
前端·javascript·css
亲亲小宝宝鸭1 天前
如何监听DOM尺寸的变化?element-resize-detector 和 resizeObserver
前端·javascript