如何在导航栏中包含页面特定的JavaScript 4
问题描述:
做谷歌搜索会为老版本的rails提供折旧的答案或者说使用turbolinks。我喜欢coffeescript文件的想法,但不想在coffeescript中编写所有东西,有没有办法让item.coffee和item.js文件都能够读取。我在轨道演员中看到了这一点,但该视频相当老旧,而且这种方法现在似乎不起作用。如何在导航栏中包含页面特定的JavaScript 4
如果唯一的方法是使用turbolinks添加页面特定的js到一个页面如何完成?
答
我知道你的问题的答案;这可能是冗长......
有没有办法有一个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刷新整个页面,这将通过刷新升级您的资产。
感谢您的详细解答。 – Rob
如果我将js编码添加到咖啡脚本文件中,它通常会中断。我需要声明它是js编码还是什么? – Rob
什么是文件名? '.js.coffee'应该可以正常工作。这就像在你的JS中有'erb' - 只有在使用'.js.erb'时才能被识别 –