2015-07-20 47 views
0

我正在編寫Meteor包,並且我發現全局變量未附加到流星包上的global對象,只有(正常流星項目這不會發生)。要重現,寫在流星包以下:全局變量未附加到MeteorJS包上的`global`對象

x = 1 
global.x = 2 

console.log(x)  // 1 
console.log(global.x) // 2 

,我會想到的是xglobal.x具有相同值(2)的行爲。

這是Meteor包的預期嗎? Node的gloabal對象有特殊的包裝嗎?

謝謝!大衛·韋爾登的響應之後

編輯:

語境:我想跟進https://github.com/feross/standard所以我在my_variable風格刪除所有全局變量聲明,以及使用global.my_variable代替。我無法使用api.export導出存儲在global上的變量,因爲api.export('global.my_variable', ...)不起作用。

回答

1

軟件包被封裝在一個閉包中以防止全局泄漏。要在包裝外露出符號,請在package.js中使用api.export

+0

感謝您的回覆David,因爲您的回覆我已更新我的問題,以表明我無法使用'api.export'導出我的全局變量。請檢查。 –

+0

那麼你需要忽略這種情況下的標準文檔。 'export'嘗試使應用程序級別的全局變量脫離包級別的全局變量。通過將變量聲明爲'global.',你可以規避這個過程。只需將'var'放在需要使用'api.export'的變量上 - 這就是所有流星包的編寫方式。 –