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

How do you require variables without a prefix

我有一个文件,其中包含一些要在其他两个文件中使用的辅助函数。我想导入函数,但是我习惯的方法并不理想:

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

我希望能够使用没有 helper 前缀的函数(例如 ok())。我该怎么做?

编辑: 目前有 7 个辅助函数,这个数字将来可能会增加,所以手动指定每个函数似乎违背了使用单独文件的目的.

你可以使用 object destructuring:

const {log, ok} = require('./helpers');
log();
ok();

与ES2015、Python或其他语言不同,您不能从另一个文件导出特定功能并直接使用它。你可以在 ES5 中做的是:

helper = require('./helpers')
var ok = helper.ok;

ok(...);
...

或者如果你更喜欢oneliner:

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

鉴于还没有人提供不涉及指定要导入的每个函数的解决方案,这里有一个可能不理想但有效的解决方案:

const helpers = require("./lib")
for (let k in helpers) {
    eval(`var ${k} = helpers.${k}`)
}