美文网首页
CommonJs和ES6 Module

CommonJs和ES6 Module

作者: vinterx | 来源:发表于2018-12-13 11:45 被阅读0次

一、简介babel

Babel是一个广泛使用的转码器,可以将ES6代码转为ES5代码,从而在现有环境执行。
目前node已经基本支持大部分es6的语法,例如const、let、箭头函数、new Set()、new Map()、new Promise()、async、await、arr.map()和arr.filter()等等
ES6、ES7支持一览表

\color{red}{但是例如import、export,async、await还不支持},所以自己总结下

二、简介CommonJS和ES6 Module

  1. CommonJs
    Node.js遵循着CommonJS规范,它有四个重要的环境变量为模块化的实现提供支持:module、exports、require、global。
console.log(module)
Module {
  id: '.',
  exports: {},
  parent: null,
  filename: 'E:\\desktops\\node_test\\index.js',
  loaded: false,
  children: [],
  paths:
   [ 'E:\\desktops\\node_test\\node_modules',
     'E:\\desktops\\node_modules',
     'E:\\node_modules' ] 
}
exports就是module的一个属性

//  a.js
exports.fn = () => {console.log('fn')}  ===  module.exports.fn = () => {console.log('fn')}
或者  module.exports = {fn: () => { console.log('fn')}}

//  index.js
var test = require(./a.js)
test.fn()
//  fn

a.js中的两种暴露接口的方法,前者只是在该module下的exports对象中添加了fn属性,未改变module.exports对象指针,还是原来的对象,后者module.exports重新赋值一个新对象,效果一样

  1. ES6 Module

ES6 在语言标准的层面上,实现了模块功能,而且实现得相当简单,旨在成为浏览器和服务器通用的模块解决方案。其模块功能主要由两个命令构成:export和import。

//  a.js
export const MAX_NUB = 20   
//  b.js
import { const } from './a.js'

//  a.js
export default {
  fn: () => {
    console.log('fn')  
  }
}
//  b.js
import fn from './a.js'

//  a.js
const MAX = 20
const MIN = 5
export { max: MAX,min: MIN}
//  b.js
import {max,min} from './a.js'

相关文章

网友评论

      本文标题:CommonJs和ES6 Module

      本文链接:https://www.haomeiwen.com/subject/cghehqtx.html