我有一個帶有一些輔助函數的文件,用於其他兩個文件。我想導入的功能,但我已經習慣了這樣的方式並不理想:如何在不帶前綴的情況下需要變量
helper = require('./helpers')
helper.log()
helper.ok()
...
我希望能夠使用的功能,而helper
前綴(如ok()
)。我怎樣才能做到這一點?
編輯:目前有7個輔助功能,而且這個數字可能在未來增長,因此指定由手中的每個功能似乎是它違背了使用一個單獨的文件的目的。
我有一個帶有一些輔助函數的文件,用於其他兩個文件。我想導入的功能,但我已經習慣了這樣的方式並不理想:如何在不帶前綴的情況下需要變量
helper = require('./helpers')
helper.log()
helper.ok()
...
我希望能夠使用的功能,而helper
前綴(如ok()
)。我怎樣才能做到這一點?
編輯:目前有7個輔助功能,而且這個數字可能在未來增長,因此指定由手中的每個功能似乎是它違背了使用一個單獨的文件的目的。
看到,因爲還沒有人提供了一個解決方案,不涉及指定您想要導入的每個功能,下面是一個解決方案,可能並不理想,但可以工作:
const helpers = require("./lib")
for (let k in helpers) {
eval(`var ${k} = helpers.${k}`)
}
這不起作用在「嚴格使用」之前,無論如何可能是一個有用的想法(在非常特殊的情況下) – Joan
你可以使用object destructuring:
const {log, ok} = require('./helpers');
log();
ok();
與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
爲什麼會倒票?我覺得人們認爲我不應該這樣做,但沒有人會說爲什麼。 – Zaz