您誤解了這個概念。讓我解釋一下這個過程。如您所知,在啓動服務器時,rails首先在sprockets-rails gem的幫助下預先編譯資產文件夾中的文件,但它通過遵循清單文件中指定的指令(即application.js和application.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資產管道。
可能重複的[Rails的 - 瞭解application.js和application.css](https://stackoverflow.com/questions/16826236/rails-understanding-application-js-and-application-css) –