在我廣泛使用ECMA 6類的nodejs項目中,我的問題是關於導出此類的問題。 有2種方式,例如:ECMA6類的模塊出口最佳實踐
class MyClass{
constructor(myAttr){this._DB =DB;}
someMethod(){DB.save()}
}
module.exports=Myclass;
方式二:
class MyClass{
constructor(){}
someMethod(obj){var DB =require('DB'); DB.save(obj)}
}
module.exports=new Myclass();
第一個依靠的.js實例化的類和傳遞變量(DB)在對象創建的MyClass,然而,隨着許多請求進入MyClass,將創建儘可能多的對象。但是,MyClass的Class級別屬性(本例中爲Db)不會被重複。
第二種方法實例化MyClass,但創建變量DB的次數與調用SomeMethod的次數相同。
第三種方法不是那麼整齊是爲DB創建全局變量和使用它:
'use strict'
const DB = require('DB')
class MyClass{
constructor(){}
someMethod(obj){DB.save(obj)}
}
module.exports=new Myclass();
我想知道哪種方法更適合在什麼情況下。
最佳, -V
第二種和第三種方法是單例,很容易導致新的全局可變狀態,這是不好的。 – Ryan
可以請您詳細說明一下! – vaibhav
@vaibhav單身人士傾向於充當全局變量,即將全局狀態引入您的應用程序。由於默認情況下Javascript中的Object是可變的,所以這個全局狀態可能是可變的。 – ftor