ES6 模块化与 CommonJS 模块化区别

发布时间:2019-08-09 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了ES6 模块化与 CommonJS 模块化区别脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

ES6 模块化与 CommonJS 模块化区别

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

ES6 模块化

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

一、 import 与 export

// 导出 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 仅有一个

// 导出 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 中都支持

// 导出 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。

参考文献 :

  1. https://www.jianshu.com/p/27e...
  2. https://juejin.im/post/5a2e5f...

脚本宝典总结

以上是脚本宝典为你收集整理的ES6 模块化与 CommonJS 模块化区别全部内容,希望文章能够帮你解决ES6 模块化与 CommonJS 模块化区别所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。