我使用了一個jQuery插件,在初始頁面加載後從服務器加載另一個js文件。由於所有js資產都在Rails 3.1中連接在一起,並且公共目錄不用於服務js資產,所以我如何引用此文件?我在哪裏放?Rails 3.1:公共目錄不再提供js資源。如何加載頁面後加載額外的js文件?
回答
Sprockets加載路徑中的每個資源都可以在運行時訪問。你可以看到在Rails中的負載路徑與
Rails.application.config.assets.paths
控制檯,您可以在初始化加載荷路徑:
Rails.application.config.assets.paths << your_load_path
默認情況下,在應用程序/資產/和供應商的所有資產/資產/自動加載。這些資產必須位於目錄內。資產/目錄中的文件本身未加載。
您可以通過訪問http://mydomain.com/assets/myscripts/hello.js加載位於apps/assets/javascripts/myscripts/hello.js
的資產。
並置是一個單獨的問題。鏈輪將在加載路徑中查找您使用鏈輪require
和provide
指令指定的資產,並從它們構建連接的文件。
似乎沒有一種簡單的方法來實現這一點。在Rails 3.1中,JavaScript和CSS文件現在連接成單個文件發送給瀏覽器。這是通過使用Sprockets庫來完成的。
實現此目的的機制涉及解析./app/assets/javascripts/application.js文件並查找將告訴Sprockets在哪裏查找相關文件的Sprockets指令。
新生成的Rails應用程序中的一個全新的application.js文件看起來像這樣:
// FIXME: Tell people that this is a manifest file, real code should go into discrete files
// FIXME: Tell people how Sprockets and CoffeeScript works
//
//= require jquery
//= require jquery_ujs
//= require_tree .
這些看起來像註釋JavaScript,但由鏈輪的指令,告訴它如何構建單一的應用程序處理。 js將被交付給客戶。您大概可以猜到,這是添加到JavaScript文件中的require_tree
行。
似乎沒有關於Sprockets指令的大量文檔。但是,source code已有詳細記錄,並很好地解釋了可用的指令。
require_tree
指令遞歸地包含app/assets/javascripts目錄中的所有文件。因此,您可以通過創建一個子目錄並將不希望包含在其中的文件放在那裏來實現您想要的目標。然後您可以將require_tree
更改爲require_path
。
此替代方法是手動管理單獨包含在鏈輪中的文件,對每個必需的JavaScript文件使用require filename
。
- 1. Laravel未加載公共資源文件
- 2. 加載.js文件在客戶端文件與節點JS提供的頁面
- 3. GWT:延期加載外部JS資源
- 4. 頁面加載後,多次加載JS文件
- 5. 如何加載頁面加載的PHP文件(jQuery提供)
- 6. 如何加載頁面特定的rails 4 js文件?
- 7. 資源文件不再加載
- 8. 如何在頁面加載後在Vaadin中加載js函數
- 9. 如何HTML加載外部JS文件
- 10. Rails 3.1 ckeditor gem。在每個頁面上加載Ckeditor資源
- 11. 笨加載CSS/JS文件頁面
- 12. d3.js不加載Rails資產管道
- 13. 從外部JS文件中使用Head.js加載資源
- 14. 如何加載供應商的Rails 3.1
- 15. 的.js刷新在軌的頁面文件後,只加載
- 16. htaccess技巧加載web根目錄下的資源(js/css)
- 17. jQuery/JS頁面加載
- 18. Rails 3.1 404加載公共/資產中存在的.css文件時出錯
- 19. Rails Heroku預編譯的資源不加載JS?
- 20. Primefaces 4.0 + Glassfish 3.1資源CSS和JS未加載
- 21. 加載JS文件
- 22. wp_enqueue_scripts不加載js文件
- 23. iPhone不加載js文件
- 24. 資源內根的Java動態網頁不加載,JS的CSS
- 25. JS:外部加載
- 26. 爲不同頁面加載不同的js文件或加載在一起?
- 27. 提交後無法加載外部JS文件
- 28. 外部的Js文件未加載
- 29. Springboot無法從資源文件加載JS文件
- 30. Richfaces 4.3 - 禁用資源(JS/CSS)加載