2017-05-25 69 views
0

我是新來的鐵路,所以請原諒這個問題。現在,爲什麼我們必須要求application.js文件中的JS文件或application.css文件中的css文件?據我所知,當我們啓動服務器的軌道加載所有的JavaScript和CSS文件從目錄到一個文件,所以如果它已經加載所有文件從目錄爲什麼需要在application.js內寫入或application.css文件?爲什麼我們必須要求rails中的application.js中的JS文件?

例如:

//= require abc 
//= require xyz 

如果我已經有abc.js和xyz.js文件,爲什麼我需要他們的application.js文件中?

+1

可能重複的[Rails的 - 瞭解application.js和application.css](https://stackoverflow.com/questions/16826236/rails-understanding-application-js-and-application-css) –

回答

1

您誤解了這個概念。讓我解釋一下這個過程。如您所知,在啓動服務器時,rails首先在sprockets-rails gem的幫助下預先編譯資產文件夾中的文件,但它通過遵循清單文件中指定的指令(即application.jsapplication.css

現在在application.js裏你有「// = require_tree」。,它告訴鏈輪加載javascript目錄內的所有文件,處理它們,壓縮併合並它們以產生一個主JavaScript文件,這有助於減少網站的頁面加載時間。現在,這是您的問題,因爲「// = require_tree」。指令已經將所有javascript文件存在於javascript目錄中,爲什麼需要指定application.js中的javascript文件? 答案是「訂單」

「// = require_tree」。它以非特定的順序或隨機順序加載,壓縮和合並所有JS文件。現在,如果你是一個Web開發人員或者現在已經開始了,你可能會知道或者將會知道很多時候你必須以某種特定的順序加載JS文件,否則當我們實現它們時可能會產生一些衝突,它們可能不起作用因爲我們希望他們。

一個這樣的着名組合是jquery和bootstrap。爲了使用引導JS部分它需要jQuery,所以你必須先初始化jquery然後引導。正因爲這個原因,在rails中,你需要application.js文件指定你想要加載的順序,壓縮併合併成一個主JS文件。由於鏈輪按照application.js文件中指定的順序從上到下處理指令,因此需要application.js文件中的文件變得非常重要。如果你有2個javascript或者css文件,那麼這些文件就不會相互矛盾,你不需要在application.js或者application.css文件中需要這些文件,它們仍然可以正常工作。

例如:

//= require jquery 
//= require jquery_ujs 
//= require bootstrap.min 
//= require_tree . 

以上,鏈輪,導軌寶石會首先加載的jquery.js文件,然後jquery_ujs.js文件,然後按順序bootstrap.min.js文件。沒有必要添加擴展名,因爲它假定所有文件都只是javascript類型的。

上面的整個解釋也適用於application.css中指定的css文件的預編譯。

欲瞭解更多信息,我建議您訪問http://guides.rubyonrails.org/asset_pipeline.html並閱讀有關rails資產管道。

+0

謝謝你這個。與傳統的HTML和JS編碼相比,它只是隱藏了很多東西。我不知道我們用普通的HTML命令jquery和bootstrap的方式,JS以這種方式在rails中實現。 –

相關問題