簡體   English   中英

為什么我們必須在rails中的application.js中要求JS文件?

[英]Why do we have to require the JS files inside application.js in rails?

我是鐵路新手,所以請原諒這個問題。 現在,為什么我們必須要求application.js文件中的JS文件或application.css文件中的css文件? 據我所知,當我們啟動服務器時,rails會將目錄中的所有javascript和css文件加載到一個文件中,所以如果它已經從目錄中加載了所有文件,為什么需要在application.js中編寫還是application.css文件?

例如:

//= require abc
//= require xyz

如果我已經有了abc.js和xyz.js文件,我為什么要在application.js文件中要求它們呢?

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

現在在application.js里面你有“// = require_tree”。 ,這告訴sprockets加載javascript目錄中的所有文件,處理它們,壓縮並組合它們以生成一個主Javascript文件,這有助於減少網站的頁面加載時間。 現在,這是你的問題,因為“// = require_tree。” 指令已經獲取了javascript目錄中存在的所有javascript文件,為什么需要在application.js中指定javascript文件? 答案是“訂單”

“// = require_tree。” 它以未指定的順序或隨機順序加載,壓縮和組合所有JS文件 現在,如果您是一名Web開發人員或現在已經開始,您可能知道或將會知道您必須多次按特定順序加載JS文件,否則在我們實施它們時可能會出現一些沖突,它們可能無法正常工作正如我們想要的那樣。

其中一個着名的組合是jquery和bootstrap。 為了使用bootstrap JS部分它需要jQuery,所以你必須首先初始化jquery然后再引導。 正是因為這個原因,在rails中你需要application.js中的文件,指定你希望sprockets加載,壓縮和組合成一個主JS文件的順序。 當sprockets按照application.js文件中指定的順序從上到下處理指令時,要求application.js文件中的文件變得很重要。 如果您有2個javascript或css文件,它們之間絕不會相互沖突,那么您無需要求application.js或application.css文件中的文件,它們仍能正常工作。

例如:

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

在上面,sprockets-rails gem將首先加載jquery.js文件,然后加載jquery_ujs.js文件,然后按順序加載bootstrap.min.js文件。 無需添加擴展名,因為它假定所有文件僅為javascript類型。

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM