我们真的不需要export default
原创大约 1 分钟
https://zhuanlan.zhihu.com/p/40733281
原文链接先说结论一:
错误的写法
// lib.js
export default {
a: 1,
b: 2
}
// main.js
import { a,b } from './lib';
console.log('a:',a);
console.log('b:',b);
-Q:为什么禁止对复合对象字面量的导出操作?(如上)
-A:babel5会将错误的写法输出成正确的值(babel5的bug),其实按照正确的esm语法,使输出为undefined的。
-A:在esm和cjs互相转换的时候加大复杂性。如下图:
正确使用ESM
导出
// lib.js
export function getName(){}
export const a = 1
export default 'name'
导入
import * as all from './lib.js'
import lib from './lib.js'
import {a} from './lib.js'
CJS的导入导出
导出
module.export = {}
export.name = 'chenjian'
导入
const name = require('./lib.js');
https://zhuanlan.zhihu.com/p/97335917
原文链接再说结论二
彻底禁用export default
我个人的观点
esm一把梭,兼容问题是暂时的,就像微软不支持ie一样。该进步还是要进步。