我有一个带有一些辅助函数的文件,可以在另外两个文件中使用。我想导入这些函数,但我习惯这样做的方式并不理想:
helper = require('./helpers')
helper.log()
helper.ok()
...
我希望能够使用不带helper
前缀的函数(例如ok()
)。我怎么能这样做?
编辑:目前有7个辅助函数,将来这个数字可能会增长,因此手动指定每个函数似乎无法使用单独的文件。
答案 0 :(得分:6)
与ES2015,Python或其他语言不同,您无法从其他文件导出特定功能并直接使用它。您在ES5中可以做的是:
helper = require('./helpers')
var ok = helper.ok;
ok(...);
...
或者如果您更喜欢oneliners:
var ok = require('./helpers').ok
这就是我假设您要导出helpers.js
中所有各种功能的单个对象。
在ES2015中,你必须略有不同地写它。
首先,您的helpers.js
需要单独导出这些功能:
export function ok(args) {
...
}
export function log(args) {
...
}
然后在你的主脚本中:
import {ok, log} from './helpers';
ok(...);
log(...);
查看更多:https://developer.mozilla.org/en/docs/web/javascript/reference/statements/import
答案 1 :(得分:5)
您可以使用object destructuring:
const {log, ok} = require('./helpers');
log();
ok();
答案 2 :(得分:-4)
看到没有人提供的解决方案不涉及指定您要导入的每个功能,这里的解决方案可能并不理想,但有效:
const helpers = require("./lib")
for (let k in helpers) {
eval(`var ${k} = helpers.${k}`)
}