這是真的,這加載了我所有的JavaScript在每一個頁面上?
是的,這就是它所做的。 Rails會將你的CoffeeScript編譯成JavaScript,然後將它們連接並縮小(製作中)成一個文件。該文件將包含在每個頁面中。
因爲說真的,我不希望有一個「產品」,當用戶是一個「類」頁面上的CoffeeScript加載到瀏覽器...
是的,你做的。這就是整個問題。這一個捆綁在上的JavaScript文件每頁加載。這樣,瀏覽器在第一次請求期間將整個網站的JavaScript一次性下載爲一個文件,並在每個其他頁面上使用緩存副本。
...因爲沒有該代碼將被用於
包括每個頁面上的額外代碼有,如果它不執行,並從緩存加載字面上沒有成本。與此同時,由於您最大限度地減少了外部JavaScript請求的數量,因此它可以節省大筆費用,這意味着您的腳本可以立即運行,並且您的DOM準備事件可以更快地啓動。
這是由你來確保這是安全的,並且你的代碼只針對它應該影響的網站部分。通常情況下,您可以通過按ID選擇特定元素並確保您的ID不在頁面之間共享,並且您不將具有特殊含義的類應用於不應該具有這些元素的元素。
有沒有一種方法,以確保只有所需要的特定視圖的CoffeeScripts被加載,而不是所有的人?
不,沒有爲每個頁面創建單獨的清單文件,這違背了使用資產管道的主要目的之一。不要這樣做。這是正確的,期望的和有意的,你的整個縮小的JavaScript包文件包含在每個頁面上。
現在已經很完美了。這樣它只需要加載一次。而且這也將有助於在不同視圖上強制執行HTML元素的命名規則,這些規定我很鬆懈,導致我犯了錯誤。謝謝! – AKWF