2013-01-07 62 views
3

我試圖用requirejs加載jQueryUI的一個CDN,這是我的配置:使用與require.js jQuery UI的和CDN

paths: 
jqueryui: "http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js" 

shim: 
jqueryui: 
    deps: ['jquery'] 

現在我的主模塊中我只是使用要求['jQueryUI的'],非常標準的方式,其他所有東西都從我的私有CDN加載,但requirejs也嘗試從私有CDN加載jqueryui,似乎認爲jqueryui是本地模塊。不知道什麼是錯的。另外,我使用requirejs-rails gem作爲require.js的包裝器。

+0

不確定,但我認爲你必須在jqueryui路徑中刪除'.js'。 – asgoth

+0

已經嘗試過,沒有'.js',它是關於requirejs-rails頁面和實際requirejs文檔的混合文檔。問題依然存在。不過謝謝。 – user1323136

+0

奇怪,[這裏](http://jsfiddle.net/asgoth/tHkHw/)我加載了不同CDN的所有內容,沒有問題。什麼路徑jQuery的? 「HTTP://private.cdn/path/jquery.min.js」? – asgoth

回答

3

在具有遠程模塊引用(如CDN內容)的項目上運行RequireJS優化程序(r.js)時,應在構建配置中使用empty:方案。

documentation

您可能想從內容分發網絡(CDN),或在不同領域的其他服務器加載腳本。 [...]但是,更有可能您不希望將該資源包含在構建中。如果腳本沒有任何依賴關係,或者您不想包含它的依賴關係,或者將以另一種方式包含它們,那麼您可以在路徑配置中使用特殊的'empty:'方案,以便在執行優化。

所以可以嘗試使用您的構建配置文件:

paths: { 
    jqueryui: "empty:" 
} 
+0

非常感謝!我正在使用requirejs-rails gem,它期望一個將它轉換爲js config選項的yml文件配置。根據他們的文檔,它應該發出一個「空的:」,任何時候你在路徑中放入一個url,但我猜測它不是,最近更新了gem,我只是想去嘗試舊版本。但是,你是在這裏,它的構建是這個問題。 – user1323136

+0

剛剛確認它,老版本的寶石正常工作!它的寶石問題,將爲寶石打開一個錯誤。 – user1323136

+1

不是很明白這一點。如果你不把jQueryUI的URL放在路徑中,你應該把它放在哪裏?那麼你的應用程序現在會在哪裏獲取它,如果只有'空'? – oligofren

1

作者的requirejs護欄這裏。這似乎是r.js中的一個迴歸,它應自動替換配置中的CDN URL的empty:。在r.js 2.0和更高版本中發佈jrburke/r.js#163時,requirejs-rails的明確替換empty:已被刪除。