【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 更方便
相关推荐
gadiaola4 分钟前
【JVM面试篇】高频八股汇总——类加载和类加载器
java·jvm·面试
小钻风336612 分钟前
深入浅出掌握 Axios(持续更新)
前端·javascript·axios
方圆工作室37 分钟前
HTML实现的2048游戏
javascript·游戏·html
vvilkim40 分钟前
Flutter 核心概念:深入理解 StatelessWidget 与 StatefulWidget
开发语言·javascript·flutter
sunly_43 分钟前
Flutter:导航背景固定在顶部,下拉分页布局
开发语言·javascript·flutter
charlee441 小时前
给Markdown渲染网页增加一个目录组件(Vite+Vditor+Handlebars)(上)
javascript·vite·markdown·vditor·handlebars
BillKu1 小时前
Vue3 + Vite 中使用 Lodash-es 的防抖 debounce 详解
前端·javascript·vue.js
一只小风华~1 小时前
HTML前端开发:JavaScript的条分支语句if,Switch
前端·javascript·html5
bingbingyihao1 小时前
UI框架-通知组件
前端·javascript·vue
逝缘~2 小时前
小白学Pinia状态管理
前端·javascript·vue.js·vscode·es6·pinia