2013-05-30 34 views
4

新手入門。試圖理解\ assests目錄中的這兩個文件。Rails - 瞭解application.js和application.css

例如,application.js中的文件具有行如:

//= require jquery 
//= require jquery_ujs 
//= require_tree . 

我明白require_tree .簡單地添加到當前目錄中的所有JS文件。根據上下文,我可以告訴require jquery添加了jQuery庫。但是它從哪裏獲得這些jQuery庫?我的資產文件夾中沒有看到任何jquery.js文件 - 或者直接在我的整個應用程序中看到這些文件?

同樣,我按照一些說明來安裝twitter bootstrap(http://rubydoc.info/gems/bootstrap-sass-rails/2.3.2.0/frames)。將Gemfile添加到Gemfile後,我需要將//= require bootstrap添加到application.js文件中,並將@import 'bootstrap'添加到我的application.css中,現在它神奇地工作了!爲什麼!?我無法在任何地方找到這些文件

謝謝!

回答

2

要了解它,您必須查看Sprockets,它用於編譯和提供網絡資產。

你可以使用gem which找到這些文件。下面是bootstrap-sass一個例子:

~ gem which bootstrap-sass 
/Users/andr/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/bootstrap-sass-2.3.0.1/lib/bootstrap-sass.rb 

@import 'bootstrap'的解釋:https://github.com/thomas-mcdonald/bootstrap-sass#css並有一個開放的issue與評論。

0

我認爲它可以從系統上安裝的gem中獲取它們,並通過Gemfile將其包含在此項目中。

您可以瞭解在http://guides.rubyonrails.org/asset_pipeline.html#manifest-files-and-directives

+0

謝謝邁克爾。爲了我自己的好奇心,我在哪裏可以找到這些文件?你是說他們可能不是特定於我的項目,而是位於與軌道整體相關的其他目錄中? (因此與項目無關) – Ricky

+1

@Ricky例如,如果您輸入終端'gem which jquery-rails',可以看到路徑,您可以在其中找到這些文件 –

+0

完美,謝謝! – Ricky

0

它的軌道神奇!所以不,你不能在自己的項目目錄中看到這些文件。如果你真的很好奇,你可以檢出創業板代碼寶石的GitHub的頁面上https://github.com/twbs/bootstrap

另外,如果你真的想改變一些東西的寶石,你可以用叉子叉代碼到你自己github上,改變的事情在您的本地分支上,然後指定您自己的github作爲gem文件的源代碼,例如...

gem'twitter-bootstrap',::git =>'[email protected]:my_github/twitter_bootstrap .git'

但是,如果您真的是新的導軌,您可能不想嘗試;)

9

的application.css和application.js中都是不正規的CSS和JS文件(他們可能是,但它們用於不同的目的

都是清單文件,告訴與鏈輪的JS

沿着管道資產

所以,作爲正確地指出由邁克爾·達蘭特的回答,http://guides.rubyonrails.org/asset_pipeline.html#manifest-files-and-directives將是正確的位置

而是根據你的其他問題,似乎你缺少的拼圖一個相當關鍵部分

Rails主要使用寶石。 寶石是你可以告訴通過捆綁添加到你的Rails應用程序的碎片代碼

當你像引導寶石一樣添加這樣的寶石時,它會被安裝(默認情況下安裝在寶石庫中,像Ruby193 \ LIB \紅寶石\寶石\ 1.9.1 \寶石)

如果你去那裏找找引導寶石,你會發現,包括在應用程序中的CSS和JS文件,也是jQuery和jquery_ujs,你包含在清單文件中

由於gem和rails一起安裝,rails不介意這些文件在哪裏(只要它知道它們在哪裏)。

所以manifest文件告訴Rails「嘿,包括這些文件對我來說,在這個特定的順序」 這就是爲什麼你可以包括你寫的文件,這是在資產的文件夾和文件都包含在一個寶石

如果您沒有在清單中包含這些文件,但仍然安裝相當於編寫css或js文件的gem,將它放在某個文件夾中,而不是告訴rails它存在。當您通過清單文件告訴欄位時,它會將其包含在資產編譯過程中,並且您可以定期訪問它。

Alternativly,你不必使用資產

資產管道可以包括CSS和JS與常規

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 

文件,只是地方託管您的文件,它指向文件,但資產管道有很多優點,它讓你的生活變得更輕鬆,當你瞭解它時

相關問題