从模块导入多个函数而不显式导出对象或命名导出

时间:2018-04-09 07:22:37

标签: javascript ember.js ecmascript-6 es6-modules

utils的/ mathlib.js

export function add(x, y) {
    return x + y;
}
export function subtract(x, y) {
    return x - y;
}

main.js

import add from "./../utils/mathlib"; //not working. but if I do default export like `export default function add(x, y)` it will work
import { add } from "./../utils/mathlib"; //working
import * as MathLib from "./../utils/mathlib"; //working

但我想导入具有相同标识符的模块中的所有可用功能,而无需单独导入或通过导入对象。像下面的东西,

import * from "./../utils/mathlib"

我应该能够使用加,减函数。

这个用例背后的原因是,每当我在MathLib.js中添加新函数时,它都应该可以不用修改。(我把MathLib作为示例用例,在我的实际用例中,每当我导入时都需要所有函数模块)。

2 个答案:

答案 0 :(得分:1)

您需要在默认对象中导出函数

export default {
    add(x, y) {
        return x + y;
    }
    subtract(x, y) {
        return x - y;
    }
}

答案 1 :(得分:1)

如果没有明确命名的导入/导出,您当前无法导入全局命名空间。它有助于防止全局命名空间污染和全局范围内的变量意外覆盖。