ES6模块和CommonJS模块的区别

239 阅读1分钟

ES6 模块导出

//ES6 中的顶级导出,与次级导出并行不悖
export default function myFunc(name,age){
  console.log('Name: '+name+'\n'+'Age: '+age+'\n');
}

var name = 'Tadokoro';
var a = 24
//以别名导出
export {name,a as age}

ES6 模块导入

import saysth,{name,age} from './sthexport.js'
saysth(name,age);

//Error
//import {myFunc,name,age} from './sthexport.js'
//myFunc(name,age)

/*
SyntaxError: The requested module './sthexport.js' does not provide an export named 'myFunc'
    at ModuleJob._instantiate (internal/modules/esm/module_job.js:96:21)
    at async ModuleJob.run (internal/modules/esm/module_job.js:134:20)
    at async Loader.import (internal/modules/esm/loader.js:179:24)
*/

CommonJS 模块导出

//两个都可以
module.exports.age = 24;
exports.name = 'Tadokoro'

//Common JS 中的顶级导出,会覆盖前面的次级导出
//module.exports = {job:"Student"}

CommonJS 模块导入

let i = require('./sthexport');
console.log('Name: '+ i.name + '\n' + 'Age: '+ i.age + '\n');