es6 module总结

CommonJS在运行时才能却确定输入和输出的变量和依赖关系,而es6则是在编译时就能确定。

let { stat } = require('fs');

// 等同于
let _fs = require('fs');
let stat = _fs.stat;

上面代码的是指是整体加载fs模块(加载fs所有方法)生成一个对象后再从这个对象读取的方法。这种加载称为‘运行时加载’,因为只有在运行时,才能确定一个变量。

ES6

import { stat } from 'fs';

上面代码的实质是从fs模块加载stat方法,而不加载其他方法。这种加载称为‘编译时加载’或静态加载,在编译时即可完成加载

1.js中所有的问题都可已称为一个模块,比如a模块同时b和c多次引用,只会在首次b引用是加载,如果a中涉及到运算,只会在b引用时运算,引用时就计算,但是a导出的function,或者class,只有在调用才会使用function或者class。

2.es6 module被多个模块引用后,其中一个模块改变值,其他模块也会改变,(不推荐改变直接改变值):

   (1)基本类型,可以重新赋值给其他变量后,改变其他变量的值,如果直接改变这个值会报错

   (2)引用类型,不重新给引用的变量赋值,比如只改变对象的一个属性,是可以改变成功的,同时其他模块引用这个模块的地方也会改变。

3.import具有提升效果,不管在哪import的模块,都会提升到文件的最前面

4.始终记得import是在静态编译时执行的,在代码运行之前,不能使用表达式和变量

最后export 对外必须是输出的是接口

何为接口?使用import能够通过变量的引用到这个值(误解)

export 1;//是吗?很显然不是,其他模块不能获取这个值

const a = 1;

export a; // 是吗?也不是,a变量表示的就是1 也是export 1 等价

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值