javascript - 禁用 turobolinks 来服务页面特定的 javascript

标签 javascript jquery ruby-on-rails ruby turbolinks

我在 Rails 5.0.0.1 中使用 Turbolinks 有一个高度交互的事件驱动页面。 在不同的页面上有不同的交互,像 window.resize 这样的事件将在我真正不需要的页面上触发。

是否值得通过禁用 Turbolinks 来提供页面特定的 javascript 来牺牲导航时间,或者我应该不关心并只使用 Jquery 中的 if 语句来使用其 ID 检查页面中是否存在某些元素。

rails 执行此操作的方式是什么?

最佳答案

不建议提供页面特定资源,例如 javascript。这会降低用户体验,因为导航到新页面会触发另一个 Assets 下载。

Rails Assets 管道的全部要点是收集您的 Assets ,缩小它们并将它们全部连接到一个文件中,浏览器仅在用户第一次导航到您的页面时下载该文件一次。

是的,使用 jQuery 检查是否存在某些元素来运行某些行为。

我发现有用的方法是不要将 js 行为视为特定于页面,而是特定于小部件。例如如果 DOM 中有可排序表,则初始化可排序表小部件,即 $(".sortable").sortable()

上面的示例使用 jQuery plugins图案。将你的行为/小部件逻辑放在 jQuery 插件中,它只会在选择器找到元素时运行,例如$("#nonexistant").something(), something() 不会被调用。 $("#definitelyExists").somethingElse(), somethingElse() 将被调用。

在前面的示例中,当找到元素并调用函数时,函数的 this 会引用匹配的元素,您可以在它们上运行行为逻辑。

关于javascript - 禁用 turobolinks 来服务页面特定的 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39355071/

相关文章:

css - 无法使用 rails helpers image_tag 或 image_path 在 Google map 上显示本地镜像图标

ruby-on-rails - 发送 502 响应 : application did not send a complete response

javascript - 将字段设置为必填后仍然可以提交表单

javascript - 使用ajax的表单不发送电子邮件

javascript - 为什么JS的链接会破坏bc?

ruby-on-rails - Seeds.rb 设置主键值,导致重复键错误

javascript - 从 Javascript Express 应用程序中进行 http 调用

javascript - 在 JavaScript 中,递归地从一组数组构建字典/嵌套对象

javascript - 如何在字符串中搜索字符串数组中包含的所有值? (JavaScript)

javascript - jQuery 动画