使用多个文件在 ES6 模块中创建命名空间。馊主意?
Creating namespaces in ES6 module with multiple files. Bad idea?
我有一个包含多个文件的库,这些文件当前通过 Gulp 连接到一个文件中。这些文件中的每一个都设置了主库对象 Rune
的 属性,因此 color.js
将设置 Rune.Color
,math.js
将设置 Rune.Math
,并且等等。
这显然是老派,所以我想使用 ES6 模块重写它,并使用 Gulp、Browserify 和 Babel 来创建编译包。
但是,我最终会得到一个命名空间消失的编译库,人们需要 import color from "rune"
才能使用颜色模块。
所以,我正在考虑这样做是我的主要模块文件:
import color from "./color"
const Rune = {
Color: color
}
export default Rune;
这是个糟糕的主意吗?该模块已在主文件中使用,因此我看不出它有任何缺点。
Is that a terrible idea?
拥有一个库的入口点并从那里导出所有方法是个不错的主意。但是,我会坚持使用 ES6 导入和导出:
// Rune.js
export {default as color} from './color';
现在客户可以使用:
import {color} from 'rune';
或
import * as Rune from 'rune';
导入他们需要的东西。
我有一个包含多个文件的库,这些文件当前通过 Gulp 连接到一个文件中。这些文件中的每一个都设置了主库对象 Rune
的 属性,因此 color.js
将设置 Rune.Color
,math.js
将设置 Rune.Math
,并且等等。
这显然是老派,所以我想使用 ES6 模块重写它,并使用 Gulp、Browserify 和 Babel 来创建编译包。
但是,我最终会得到一个命名空间消失的编译库,人们需要 import color from "rune"
才能使用颜色模块。
所以,我正在考虑这样做是我的主要模块文件:
import color from "./color"
const Rune = {
Color: color
}
export default Rune;
这是个糟糕的主意吗?该模块已在主文件中使用,因此我看不出它有任何缺点。
Is that a terrible idea?
拥有一个库的入口点并从那里导出所有方法是个不错的主意。但是,我会坚持使用 ES6 导入和导出:
// Rune.js
export {default as color} from './color';
现在客户可以使用:
import {color} from 'rune';
或
import * as Rune from 'rune';
导入他们需要的东西。