详解ES6模块化和CommonJS模块化的区别


本文摘自PHP中文网,作者青灯夜游,侵删。

ES6 模块化与 CommonJS 模块化区别

在最近的项目中关于 ES6 的 import、export 和 CommonJS 中的 module.exports、require 的使用傻傻搞不清楚,今天下定决心总结一下,有什么不对的地方,还请诸位多多指教。

ES6 模块化

import命令用于输入其他模块提供的功能;export命令用于规定模块的对外接口。

一、 import 与 export

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

// 导出 a.js

 

/** 写法一 **/

var name = 'sheep'

function getSheep() {

    name = 'hourse'

}

export {getSheep}

 

// 引入 b.js

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

 

 

/** 写法二 **/

var name = 'sheep'

export function getSheep() {

    name = 'hourse'

}

 

// 引入 b.js

 

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

二、 import 与 export defalut

export 可以有多个,export default 仅有一个

1

2

3

4

5

6

7

8

9

10

11

12

// 导出 a.js

let obj = {

    name: 'hello',

    getName: function (){

        return this.name

    }

 

export default obj

 

// 引入 b.js

 

import obj from './a.js'

CommonJS 模块化

一、 require 与 module.exports

require 在 ES6(bable将import转化为require) 和 CommonJS 中都支持

1

2

3

4

5

6

7

8

9

10

11

12

13

// 导出 a.js

 

let obj = {

    name: 'hello',

    getName: function (){

        return this.name

    }

 

module.exports = obj

 

// 引入 b.js

 

let obj = require('./a.js')

总结

  • 即使我们使用了 ES6 的模块系统,如果借助 Babel 的转换,ES6 的模块系统最终还是会转换成 CommonJS 的规范。

  • Babel5 中使用 require 时,引入值是 module.export 返回的值或者是 export default 返回的值。

  • Babel6中,使用 import 引入时,可以直接获取到 export default 的值 ; 但是如果是 require 导入的组件, 无论导出是 module.export 、export 、 export default可以直接获取到 export default 的值都必须要加上一个 default。

参考文献 :

  • https://www.jianshu.com/p/27ee06296bcd

  • https://juejin.im/post/5a2e5f0851882575d42f5609

推荐教程:《JS教程》

以上就是详解ES6模块化和CommonJS模块化的区别的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

深入学习ES6作用域

聊聊javascript中eval()函数的用法

原来ES6 module还可以这样用!(备忘单)

ES6 filter()方法如何实现?用法介绍

ES6中generator函数的用法介绍

javascript中的generator函数的用法介绍(附代码)

详解ES6模块化和commonjs模块化的区别

javascript中amd和ES6模块导入导出的比较(代码示例)

javascript中数组克隆的方法介绍(附代码)

ES6中变量的解构赋值的用法介绍(附代码)

更多相关阅读请进入《ES6》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...