一、简介babel
Babel是一个广泛使用的转码器,可以将ES6代码转为ES5代码,从而在现有环境执行。
目前node已经基本支持大部分es6的语法,例如const、let、箭头函数、new Set()、new Map()、new Promise()、async、await、arr.map()和arr.filter()等等
ES6、ES7支持一览表
,所以自己总结下
二、简介CommonJS和ES6 Module
- 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重新赋值一个新对象,效果一样
- 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'
网友评论