ES-Module导入和导出

在这里插入图片描述

拨云见日
本篇文章主要是给大家介绍ES-Module导入和导出,还有一些需要注意的事项
导出
## 通过关键字 export 导出

#### 导出变量

//demo1.js

let str = 'string'

export str

//demo2.js

import { str } from  ".demo1.js"

console.log(str) // => string

#### 导出多个变量或者是方法/对象

//demo1.js

let arr =  []

const fun1 = () => { }

let num = 200

export {arr,fun1,num}

//demo2.js

import {arr,fun1,num} from "./demo1.js"

console.log(arr,fun1,num) //=> [] , function ,200

#### 设置别名

//demo1.js

let arr2 =  []

export { name as fooname }

//demo2.js

import { fooname } from "./demo1.js"

重命名有一个特殊的情况,如果变量名是default 就必须使用as,因为default属于保留字

#### 默认导出 

//demo1.js

let str2 = 'string2'

export default str

//demo2.js

import name from  ".demo1.js"

console.log(name) // => string2
注意事项
export导出语法需要注意的地方

//demo1.js内容如下

let num3 = 20;

export { num3 } ;//注意这里并不是对面字面量的增强/或者是导出一个对象,仅仅是语法规定这么写

 //demo2.js内容如下
 
import { num3 }  form "./demo1.js";//这里也不是对象的解决仅仅是语法规定,请大家不要混淆

//如果要导出一个对象的话使用 export default 语法

//导出  demo1.js
export default { num3 };


//引入
//这里就不能用 import { num3 } form "./demo1.js"语法了
import add form "./demo1.js"
使用ESModule语法的话,模块导出仅仅是引用并不是拷贝了一份新数据,commjs是直接拷贝了一份新数据

//demo1.js
let name1 = 'loki';
let age2 = 20;
setTimeout(() => {
    name = 'loken'
}, 1000);
export {name1,age2};

//demo2.js
import { name1,age2 }  from "./demo1.js";
name1 = 'spring' //=> 直接报错 因为导出的只读成员(也就是常量),并不可以改变
console.log(name1,age2)
setTimeout(() => {
  console.log(name1,age2)
}, 2000);

谢谢观看,如有不足,敬请指教

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值