搞懂ES6的import export

本文详细解析了JavaScript中import与export的多种使用方式,包括如何正确地导出和导入模块对象,以及解决命名冲突的方法。

引言

说来惭愧,这两个关键字几乎天天在写,但是自己写的模块export出去的对象,import居然拿不到,也是没谁了?。痛定思痛,还是写篇博客加深一下记忆。

import的方式

import有以下几种使用方式:


import a from './module.js'

import {a} from './module.js'

import deflt, {a} from './module.js'

import * as a from './module.js'

export的几种方式

export const a = 1 //export后面是一个表达式

export function b(){} //export后面是一个函数声明语句

export default {c: 1} //export default

export default 后面不能跟赋值表达式

import到底import了谁

其实就是个连线题。一个模块export的对象有两种,一种是通过export default导出的,另一种是通过export导出的。通过export default导出的可以用以下方式接收:


import defaultObj from 'module'

通过export导出的对象有以下两种接收方式:

// 导出
export const a = 1;


// 导入时

// 方式一
import * as md from 'module'

// md 拿到了所有用export方式导出的对象,这些对象都作为md的属性

md.a // 1

// 方式2,直接对*解构
import {a} from 'module'

uploading-image-350111.png

搞两年前端了,这还没搞清楚,有点说不过去了。。

使用 as 重命名

有时候,模块里的变量名和本地的变量名可能会出现命名冲突,这时可以使用 as 关键字起个别名。可以给默认导出的default变量,导出的某一个模块变量,或者给*这个命名空间直接命名

import * as name from "module-name";
import defaultExport, * as name from "module-name";
import { export1 , export2 as alias2 , [...] } from "module-name";

参考

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/export

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/import

转载于:https://www.cnblogs.com/imgss/p/10401389.html

### ES6 中 `export` 和 `import` 的使用教程 #### 默认导出与命名导出的区别 在 ES6 模块化编程中,有两种主要的导出方式:默认导出 (`export default`) 和命名导出 (`export`)。 对于 **默认导出** ,一个模块只能有一个默认导出项。这种方式允许开发者不依赖于具体的变量名称来导入模块[^1]: ```javascript // math.js 文件中的默认导出 export default function add(a, b) { return a + b; } ``` 而 **命名导出** 则允许多个不同实体被导出,并且这些实体可以通过它们各自的名称来进行访问。当采用这种形式时,在另一个文件里导入的时候需要加上花括号 `{}` 来指明具体想要获的内容: ```javascript // constants.js 文件中的多个命名导出 const PI = 3.1415926; const EULER_NUMBER = 2.718; export { PI, EULER_NUMBER }; ``` #### 如何导入已导出的对象? 对应上述两种不同的导出方法,存在相应的导入语句格式。 如果目标是从其他地方引入由 `export default` 定义的功能,则可以直接利用简单的 `import` 关键字后面跟上自定义的名字即可完成操作;而对于那些通过常规 `export` 声明出来的成员来说,则需按照其原始名字包裹在大括号内进行引用: ```javascript // 导入默认导出的例子 import add from './math'; console.log(add(2, 3)); // 输出: 5 // 导入命名导出的例子 import { PI, EULER_NUMBER } from './constants'; console.log(`圆周率大约等于 ${PI}, 自然常数 e 大约等于 ${EULER_NUMBER}`); ``` 另外值得注意的是,ES6 还提供了动态加载的能力——即可以在运行期间按条件决定是否以及何时去请求特定资源。这主要是借助新的 `import()` 函数实现的,它会返回一个 Promise 对象以便处理异步逻辑[^4]: ```javascript button.addEventListener('click', () => { import('./dialogBox') .then(dialogBoxModule => dialogBoxModule.showDialog()) .catch(error => console.error('Error loading module:', error)); }); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值