使用CommonJS形式的话可以直接导出一个模块:
module.exports = {};
如果使用rollup的话等同于如下:
export default {};
它会转换为如下代码
'use strict';
var main = {};
module.exports = main;
但是babel会转化为:
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = {};
export default导出的对象变成了模块的一个default属性,而不是整个模块。
那么如果使用babel编译的话,要使得export default导出的是整个模块该怎么做?
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
编译成什么不重要,重要的是,它们在各自的环境下都是可用的。这对你来说就足够了。
理论上,
es6的模块是静态模块,和CommonJS的模块含义有很大不同,你给的代码大致都说得通。不必强求为什么两个库实现不一样(又不是一个人写的,目标也不同,干嘛非得一样),语法就是语法,至于解释权rollup和babel都有自己解释的权利(你管不着)。如果想了解更多这两个模块规范的不同,看这里
export default {
}
不知道是不是你想要的
你说的是实现细节。
在实际使用上,如果 rollup 和 bebel 遵从相同的规范,那么它们的效果也是一样的。
没有必要强求实现细节也一样吧(毫无意义)