我正在學習在NodeJS(7.7.3)中使用ECMAScript6風格的類。我用這樣的編程風格:在Nodejs中傳遞參數低谷需求模塊到ES6類
//app.js
var forecastHandler = require('./forecastHandler.js');
//forecastHandler.js
class ForecastHandler {
constructor() {}
}
module.exports = new ForecastHandler()
它一直行之有效到現在,是因爲我要傳遞參數給模塊。
//app.js
var forecastHandler = require('./forecastHandler.js')(3600);
//forecastHandler.js
class ForecastHandler {
constructor(cacheUpdateDelay) {}
}
module.exports = new ForecastHandler(cacheUpdateDelay)
我得到這個錯誤:不定義cacheUpdateDelay:引發ReferenceError。 我可以使用ES6風格的類將參數傳遞給ForecastHandler模塊並在module.exports上創建對象嗎?如果我只導出類並在app.js中創建對象,則代碼有效,但它的語法很醜陋。
//app.js
var forecastHandlerClass = require('./forecastHandler.js');
var forecastHandler = new forecastHandlerClass(3600);
//forecastHandler.js
module.exports = ForecastHandler
編輯:更好的例子
謝謝你,這個工程。我太癡迷單線運動了。 – jartza
你的包裹在'require'周圍的地方是錯誤的。這會調用'require'本身作爲構造函數,然後將模塊導出放回原位,然後將模塊導出作爲普通函數調用,而不使用'new'。 – loganfsmyth
@loganfsmyth的確,感謝您發現這一點。這當然是我想要的代碼。雖然我會主張或使用*代碼*。 – lonesomeday