2016-07-26 40 views
-1

我有一个带有一些辅助函数的文件,用于其他两个文件。我想导入的功能,但我已经习惯了这样的方式并不理想:如何在不带前缀的情况下需要变量

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

我希望能够使用的功能,而helper前缀(如ok())。我怎样才能做到这一点?

编辑:目前有7个辅助功能,而且这个数字可能在未来增长,因此指定由手中的每个功能似乎是它违背了使用一个单独的文件的目的。

+1

为什么会倒票?我觉得人们认为我不应该这样做,但没有人会说为什么。 – Zaz

回答

-4

看到,因为还没有人提供了一个解决方案,不涉及指定您想要导入的每个功能,下面是一个解决方案,可能并不理想,但可以工作:

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

这不起作用在“严格使用”之前,无论如何可能是一个有用的想法(在非常特殊的情况下) – Joan

6

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

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

ok(...); 
... 

或者如果你喜欢oneliners:

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

这就是我想你导出的你helpers.js有各种功能的单个对象。

在ES2015中,您必须稍微改写一下。然后

export function ok(args) { 
    ... 
} 

export function log(args) { 
    ... 
} 

在主脚本:

首先,您helpers.js需要单独导出功能,这样

import {ok, log} from './helpers'; 
ok(...); 
log(...); 

查看更多:https://developer.mozilla.org/en/docs/web/javascript/reference/statements/import

+1

关于答案的第一部分,存在一个较短的版本:'var ok = require('./ helpers')。ok' – DrakaSAN

+0

@DrakaSAN:随时编辑答案(:这是正确的! – mauris

相关问题