import default默认导出和命令导出

本文详细介绍了JavaScript中模块的导入导出机制,包括默认导出和命名导出的区别及用法,以及如何在不同场景下灵活运用。


这是默认导入:

// B.js
import A from './A'复制代码

只有A具有默认导出时才有效:

// A.js
export default 42复制代码

在这种情况下,导入时为其指定的名称无关紧要:

// B.js
import A from './A'
import MyA from './A'
import Something from './A'复制代码

因为它将始终解析为默认导出任何内容A

这是一个名为import的导入A

import { A } from './A'复制代码

它仅在A包含名为的导出A时才有效:

export const A = 42复制代码

在这种情况下,名称很重要,因为您通过其导出名称导入
特定的东西:

// B.js
import { A } from './A'
import { myA } from './A' // Doesn't work!
import { Something } from './A' // Doesn't work!复制代码

要使这些工作,您可以将相应的命名导出添加到A

// A.js
export const A = 42
export const myA = 43
export const Something = 44复制代码

一个模块只能有一个默认导出,但是你可以拥有
多个命名导出(零,一,二或许多)。您可以将它们全部导入:

// B.js
import A, { myA, Something } from './A'复制代码

在这里,我们将默认导出导入为A,并分别命名为exportsmyASomething

// A.js
export default 42
export const myA = 43
export const Something = 44复制代码

我们还可以在导入时为它们分配所有不同的名称:

// B.js
import X, { myA as myX, Something as XSomething } from './A'复制代码

默认导出倾向于用于您通常希望从模块获得的任何内容。
命名导出往往用于可能很方便的实用程序,但并不总是必需的。
但是,您可以选择如何导出内容:例如,模块可能根本没有默认导出。

引用David Herman

:ECMAScript 6支持单/默认导出样式,并为导入默认值提供最甜蜜的语法。
导入命名导出可以,甚至应该略微简洁。

但是在TypeScript中,由于重构,命名导出很受欢迎。
例如,如果默认导出类并重命名,则类名将仅在该文件中更改而不在其他引用中更改,并且将在所有引用中重命名命名的导出类名。
实用程序也首选命名导出。

总体使用你喜欢的任何。

额外

默认导出实际上是名为default的命名导出,因此可以将默认导出导入为:

import {default as Sample} from '../Sample.js';复制代码


<think>嗯,用户问的是React中的默认导出具名导出的区别。我之前学过一些ES6模块的知识,但需要回忆一下具体细节。首先,得明确导出方式的不同。默认导出应该是一个模块只能有一个,而具名导出可以有多个。比如在React组件中,通常用默认导出,但如果有多个组件或者函数,可能需要具名导出。 然后,用户可能是在写React的时候遇到了导入的问题,比如如何正确引入组件。需要解释两种导出方式在导入时的语法差异。默认导出导入时可以任意命名,而具名导出必须用相同的名字或者用as重命名。例如,导出时用export default Component,导入时可以import MyComponent from './Component'。而具名导出的话,比如export function Button() {...},导入时得用import { Button } from './components'。 还要注意混合使用的情况,比如一个模块同时有默认导出具名导出,这时候导入的方式是import DefaultExport, { NamedExport } from './module'。用户可能在实际项目中会遇到这种情况,需要举例说明。 另外,可能需要解释为什么React组件通常使用默认导出,可能是因为每个文件通常只导出一个组件,这样在导入时更方便。而工具函数、常量等可能更常用具名导出,方便按需导入。 用户可能的误区是混淆两种导出方式,导致导入时出现错误,比如忘记加花括号或者错误命名。需要指出常见的错误案例,帮助用户避免。 总结的话,应该分点说明两者的定义、语法、导入方式、使用场景以及注意事项。确保结构清晰,让用户能够一步步理解区别应用场景。</think>React中的默认导出Default Export)具名导出(Named Export)是ES6模块系统的两种导出方式,主要区别如下: --- ### 一、定义方式 1. **默认导出** - 每个文件只能有 **1个** 默认导出 - 导出语法: ```javascript export default Component; ``` 2. **具名导出** - 每个文件可以有 **多个** 具名导出 - 导出语法: ```javascript export function Button() {} // 直接导出 // 或 const Header = () => {...}; export { Header }; // 先定义后导出 ``` --- ### 二、导入方式 1. **默认导出的导入** - 导入时可自定义名称 - 不需要花括号 `{}` ```javascript import MyComponent from './MyComponent'; // 任意命名 ``` 2. **具名导出的导入** - 必须使用 **导出时的名称**(或用`as`重命名) - 需要花括号 `{}` ```javascript import { Button, Header } from './components'; // 或重命名 import { Button as MyButton } from './components'; ``` --- ### 三、混合使用场景 若文件同时包含两种导出: ```javascript // 导出文件 export default App; export const API_URL = 'https://api.example.com'; ``` 导入时组合使用: ```javascript import MainComponent, { API_URL } from './module'; // MainComponent对应默认导出 // API_URL对应具名导出 ``` --- ### 四、最佳实践 | 场景 | 推荐方式 | 示例 | |--------------------|--------------|-------------------------| | 主组件/单一核心功能 | 默认导出 | `export default App` | | 工具函数/辅助组件 | 具名导出 | `export { utils, Card }` | | 需要批量导出多个对象 | 具名导出 | `export const A=1, B=2` | --- ### 五、常见错误案例 ```javascript // ❌ 错误:默认导出没有用default export App; // ✅ 正确 export default App; // ❌ 错误:导入具名导出时缺少花括号 import Button from './components'; // ✅ 正确 import { Button } from './components'; ``` 掌握这两种导出方式,能让你的React项目模块组织更清晰,避免出现`undefined`等引用错误。实际开发中建议根据业务场景灵活组合使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值