2013-02-15 110 views
13

我將用Ruby on Rails 3.2啓動一個豐富的客戶端Web應用程序。我打算使用RequireJS,但它似乎與資產管道相沖突。據我所知,後者基本上做的是連接依賴資產,縮小和壓縮它們(糾正我,如果我錯了),這似乎不是非常兼容加載JavaScript文件的異步。Rails 3.2資產管道和RequireJS

乍看之下,資產管道似乎有更好的表現。但是,RequireJS允許您以易於重用的模塊組織JavaScript代碼並管理其依賴項。

有什麼辦法可以將兩者結合起來嗎?如果沒有,你會選擇哪一個?

+0

什麼意圖成爲RequireJS在瀏覽器中包含js模塊或服務器端的用法? – 2013-02-15 17:27:32

+0

它會在瀏覽器中使用 – davids 2013-02-15 17:28:57

+0

它會做的很好。 – 2013-02-15 17:32:02

回答

4

我建議下載RequireJS庫並把它扔到vendor/assets/javascripts。然後在您的application.js文件:

//= require require 

(?可笑,是),這應該是足夠的。

這是組合資產管道和模塊化js庫的最簡單方法。我不知道這個特定的圖書館需要額外的設置,但你可以看看this Railscast,它描述了類似的東西。

+0

沒關係,它可以工作,但是,爲什麼不禁用管道呢? – davids 2013-02-15 17:27:46

+0

我認爲如果一切正常,它應該保持原樣。沒有管道的話:沒有壓縮的js前後來回...... – 2013-02-15 17:30:15

+1

但是我的觀點是,異步加載的腳本不會被壓縮,對嗎?他們不會被包含在清單 – davids 2013-02-15 17:35:29

7

,你可能覺得這個寶石https://github.com/jwhitley/requirejs-rails/

似乎是在做你想要什麼看看 - 這是使用requirejs加載客戶端,同時還採取了一些資產管道的優勢。

我會試着建議,我想在大多數情況下,資產管道將會加載一個單一的縮小的js資源要快得多。依賴管理雖然不盡如人意,但它非常依賴應用程序。

+1

完全取決於構建過程/應用程序。您可以使用r.js將文件縮小爲單個文件進行生產,或利用AMD並創建按需加載的程序包或延遲加載的程序包,稍後再使用。 – kmiyashiro 2013-07-10 20:05:03