进行谷歌搜索会为旧版本的rails提供折旧答案,或者说使用turbolinks。我喜欢coffeescript文件的想法,但不想写coffeescript中的所有内容有没有办法让item.coffee和item.js文件读取它们。我在轨道演员中看到了这个,但是视频已经很老了,而且这种方法现在似乎不起作用。
如果唯一的方法是使用turbolinks将页面特定的js添加到页面中,该怎么做?
答案 0 :(得分:1)
我知道你问题的答案;这可能是冗长的......
有没有办法让item.coffee和item.js文件读取两个
Coffeescript
是pre-processor。
与SCSS
/ SASS
一样,它通过“coffeescript”代码运行并转换为标准化的JS。简而言之,coffeescript本身并不是一种“语言”,标准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>
(通过消除每次重新初始化资产的需要来加快网页加载速度)。
当然,这是空的&amp;处理不同资产时无效。
如果您拥有不同的资产集(不同的布局等),Turbolinks
将根据情况重新加载:
#app/views/layouts/application.html.erb
<%= stylesheet_link_tag :application, (:transactions if controller_name == "transactions") %>
在这种情况下,Turbolinks刷新整个页面,这将通过刷新更新您的资产。