2013-05-16 80 views
0

這是我第一次真正使用流星,我試圖加載使用流星框架JS文件,我得出了一個複雜,我要做到以下幾點:流星加載JS文件基於條件語句

<script type="text/javascript"> 
     document.write('<script src=' + 
     ('__proto__' in {} ? 'js/vendor/zepto' : 'js/vendor/jquery') + 
     '.js><\/script>') 
    </script> 

我想加載特定的JS文件基於特定的條件。

據我所知,Meteor有一種加載JS文件的方式,他們首先加載最深的文件,然後按字母順序加載。很顯然,如果我將腳本放在客戶端文件夾中,那麼無論如何都會在這個世界上無需顧慮地加載兩個js文件。以上面的代碼動態加載文件的最佳方式是什麼?

謝謝

回答

1

流星忽略以'。'開頭的文件夾。

一個解決辦法是把那個將被有條件地納入到一個文件夾命名的東西就像在你流星項目」 .includes'和使用條件語句其他地方的一切,包括他們的東西,如

require(path_to_that_folder + 'filename.js'); 

見:

http://docs.nodejitsu.com/articles/getting-started/what-is-require

http://nodejs.org/api/modules.html

+1

感謝您的回答。我想我的工作是我需要做的。 ;) – koramaiku

+0

沒問題,如果您需要更多幫助,請讓我知道 –

2

隨着流星1+,你應該只從你的私人和公共文件夾'加載'文件。因爲文件路徑在儀表開發和部署之間發生變化,所以對私有和公共目錄之外的路徑使用直接讀/寫操作可能會失敗。

對於客戶端,您可以使用相對於公用目錄的路徑訪問公用目錄中的任何文件。例如$ .getScript()可用於訪問公用文件夾中的腳本。對於服務器,您可以使用Assets.getText()或Assets.getBinary()再次使用私人目錄中的相對路徑訪問私人目錄中的任何文件。

在這兩種情況下,在相對路徑中不包括私人或公共。如果你的文件在'public/foo/yoo.js',只需指定'foo/yoo.js'。