你如何要求没有前缀的变量

时间:2016-07-26 07:44:06

标签: javascript node.js require

我有一个带有一些辅助函数的文件,可以在另外两个文件中使用。我想导入这些函数,但我习惯这样做的方式并不理想:

helper = require('./helpers')
helper.log()
helper.ok()
...

我希望能够使用不带helper前缀的函数(例如ok())。我怎么能这样做?

编辑:目前有7个辅助函数,将来这个数字可能会增长,因此手动指定每个函数似乎无法使用单独的文件。

3 个答案:

答案 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}`)
}