2016-01-23 89 views
3

做谷歌搜索會爲老版本的rails提供折舊的答案或者說使用turbolinks。我喜歡coffeescript文件的想法,但不想在coffeescript中編寫所有東西,有沒有辦法讓item.coffee和item.js文件都能夠讀取。我在軌道演員中看到了這一點,但該視頻相當老舊,而且這種方法現在似乎不起作用。如何在導航欄中包含頁面特定的JavaScript 4

如果唯一的方法是使用turbolinks添加頁面特定的js到一個頁面如何完成?

回答

1

我知道你的問題的答案;這可能是冗長......


有沒有辦法有一個item.coffee和item.js文件,所以它讀取兩個

Coffeescript是一個pre-processor

SCSS/SASS一樣,它通過「coffeescript」代碼運行並翻譯成標準化的JS。總之,咖啡本身不是一種「語言」,它只是標準JS的pseudocode

這意味着,如果您使用的是coffeescript擴展,你可以仍然使用標準JS吧:

#app/assets/javascripts/item.js.coffee 
alert("hello"); #-> Js 
alert "hello" #-> Cs 

...相同的功能。

-

如果唯一的方法是使用turbolinks到網頁具體JS添加到頁面怎麼是做

這不是「唯一」的方式。 It's no way at all

與其讓瀏覽器重新編譯JavaScript和每個頁面變化之間的CSS,它[Turbolinks]保持當前頁面實例活着,僅替換體(或部分)和標題的頭

Turbolinks替換你的頁面的<body>如果資產保持不變(它通過消除需要重新初始化每次資產加快頁面加載)。

當然,這是空的&無效處理不同的資產。

如果你有一組不同的資產(不同的佈局等),Turbolinks將酌情重裝:

#app/views/layouts/application.html.erb 
<%= stylesheet_link_tag :application, (:transactions if controller_name == "transactions") %> 

在這種情況下,Turbolinks刷新整個頁面,這將通過刷新升級您的資產。

+0

感謝您的詳細解答。 – Rob

+0

如果我將js編碼添加到咖啡腳本文件中,它通常會中斷。我需要聲明它是js編碼還是什麼? – Rob

+0

什麼是文件名? '.js.coffee'應該可以正常工作。這就像在你的JS中有'erb' - 只有在使用'.js.erb'時才能被識別 –

相關問題