CommonJs和ES6 Module

一、簡介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'
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。