2016-01-23 87 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'时才能被识别 –

相关问题