2015-11-13 29 views
1

我已經從編寫高度面向對象的代碼寫入JavaScript,所以我覺得它很奇怪如何流星編譯所有的JavaScript到一個大的JavaScript文件。如何在Meteor中需要服務器端JavaScript?

我的問題是我有兩個JavaScript文件,OpenIDService.js和SteamOpenIDService.js,SteamOpenIDService.js包含一個類,OpenIDService.js也包含一個類。 SteamOpenIDService類繼承自OpenIDService類,但繼承自不同的JavaScript文件,我需要包含/導入/需要其他JavaScript文件,但我導致認爲Meteor不支持'require'函數,而是包含文件基於文件夾結構的特定順序,我發現它非常容易混淆。

有關文件夾結構有點...

  • ./server/lib/OpenIDService.js
  • ./server/lib/SteamOpenIDService.js
  • ./server/init.js

init.js文件引用了SteamOpenIDService類。

如何讓流星包含/導入/需要OpenIDService進入SteamOpenIDService文件?

+3

[我如何訪問Meteor中的lib/constants.js文件中的常量?](http://stackoverflow.com/questions/26836390/how-can-i-access-constants-in-the -lib-constants-js-file-in-meteor) –

+0

[This package](https://github.com/meteorhacks/npm)展示瞭如何使用Meteor.npmRequire() –

回答

2

流星首先自動導入文件深度,並按字母順序排列。將導出文件中全局變量。

如果您的SteamOpenIdService繼承自OpenIDService,那麼它們的當前名稱應該可以工作。

您需要確保OpenIDService是全局的(即,它之前沒有var)。

See this answer瞭解加載順序的詳細信息。

+0

它們都是普通的類文件(class OpenIDService {)...所以我把OpenIDService和SteamOpenIDService類放在同一個JavaScript文件中...現在SteamOpenIDService可以引用OpenIDService,但是在我的init.js文件中,我無法引用SteamOpenIDService? - ./server/lib/openid.js(包含OpenIDService和SteamOpenIDService類) - ./server/init.js(它運行此代碼「var openid_authenticator = new SteamOpenIDService() ;「) 我得到這個錯誤,引用錯誤:SteamOpenIDService未定義 at server/init.js:8:36 –

+1

你是如何準確定義SteamOpenIDService的?請張貼代碼,以便我們提供幫助。 –

+0

類SteamOpenIDService擴展OpenIDService { –

相關問題