ES Module 和 Commonjs 的区别

1. 语法

1.1 ES Module

导出:export / export default
导入: import * from 'module'

1.2 Commonjs

导出:module.exports
导入:const module = require('module')

 

2. 特性

2.1 ES Module

静态引入、编译时引入(支持Tree shaking)

ES Module 和 Commonjs 的区别
// lib.mjs
export let a = 1
export const b = 2
export function aPlus1 () {
   return a++  
}
View Code ES Module 和 Commonjs 的区别
// index.mjs
import { a, aPlus1 } from './lib.mjs'

console.log(a) // 1

aPlus1()

console.log(a) // ?
View Code ES Module 和 Commonjs 的区别
// package.json - 新版本node支持执行ES Mdolue,不过要加上这个配置,且文件后缀要为mjs
{
 "type": "module"
}
View Code

 

2.2 Commonjs

动态引入、执行时引入

ES Module 和 Commonjs 的区别
// lib.js
let a = 1
let b = 2
function aPlus1 () {
  return a++
}
module.exports = {
 a, b, aPlus1
}
View Code ES Module 和 Commonjs 的区别
// index.js
let { a, aPlus1 } = require ('./lib.js')

console.log(a) // 1

aPlus1()

console.log(a) // ?
View Code

 

上一篇:模块化


下一篇:用monit监控系统关键进程