17

我习惯于将我的 JS 粘贴在我的 body 元素的底部(根据 HTML5Boilerplate),但是由于TurboLinks (在 Rails 4 中默认启用)会在每个请求时重新加载正文(和标题),这是否有意义从现在开始把我的JS放在头上?在这方面是否有任何体面的指南或最佳实践?

4

2 回答 2

10

如果您使用的是 Turbolinks 5,您现在可以将 turbolinks 放在身体底部(并遵循 web 开发最佳实践来呈现页面)。这也对 SEO 有所帮助。只需将脚本添加到正文底部并添加

data-turbolinks-eval="false"

到您的脚本标签。这将防止 turbolink在初始页面加载后进行评估。以下是它是如何完成的javascript_include_tag

<%= javascript_include_tag 'application', 'data-turbolinks-eval' => 'false'%>

然后只需使用

$(document).on('turbolinks:load', function() { // code to be executed when use changes pages });

于 2016-09-28T14:18:07.013 回答
7

默认情况下,预编译的 application.js(根据资产管道)也处于打开状态。原因是,即使 js 在页面的其余部分之前加载,由于 js 始终相同,它将从第二个请求开始从缓存中加载,因此没有实际理由在底部提供它身体了。

于 2012-09-28T14:59:04.457 回答