es6 import & export

本文详细介绍了ES6中模块的使用方法,包括如何通过export和import进行变量、函数的导出与导入,以及默认模块和非默认模块的区别。此外还探讨了import指令的执行方式。

前言:ES6把js文件当做模块处理
一、export & import
示例1:
导出一个变量

//test.js
var name = "Amy";
export {name};

//写法2 (注意导入变量写法)
var name = "Amy";
export {name as anotherName};

//写法3
export var name = "Amy";

//反模式
var name = "Amy";
export name; //export输出的是接口,现在输出值,所以不可以。

导入变量

import {name} from 'test'

//针对导入写法2
import {anotherName} from 'test'

示例2:
导出一组变量

//test.js
var name = "Amy";
var age = "20";
export {name, age};

//写法2
export {name};
export {age};

导入一组变量

//写法1
import {name, age} from 'test'

//写法2
import * as test from 'test'
test.name;

//写法3 module指令 (等同于写法2)
module test from 'test'
test.name;

示例3:
导出函数

//test.js
export function f1() {...};
export function f2() {...};

示例4:
导出默认模块
默认模块只能有一个,export default只是输出一个叫default的变量,所以default后接任何变量名,都视为匿名

//test.js
export default function f1() {...};

//写法2
function f1() {...}
//不用加花括号{},export default f1是将f1赋值给default
export default f1;

//反模式
export default var a = "Amy";

导入默认模块

//不用加花括号{}
import f1 from 'test'

示例5:
导出匿名默认模块

//test.js
export default function () {...};

导入匿名默认模块

//import 可以为该匿名模块指定任意名字
import anyName from 'test'

示例6:
同时导出非默认和默认模块

//test.js
var name = "Amy";
var age = 20;
export default name;
export {age};

同时导入非默认和默认模块

import name, {age} from 'test'

二、import

  • import会执行所加载的模块
import 'test'
//执行test,但不导入任何变量

三、总结

  • import
    • 非默认模块加花括号 import {notDefaultName} from 'fileName'
    • 默认模块不加花括号 import defaultName from 'fileName'
  • export
    • 非默认模块加花括号 export {notDefaultName} 或 导出声明 export var a = 0
    • 默认模块不加花括号 export default defaultName,实质导出变量default

四、参考文献
阮一峰 ES6 import export

### 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)); }); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值