Rails应用程序中的Turbolink(JS)重新加载问题

时间:2018-12-23 10:44:28

标签: javascript ruby-on-rails-5 asset-pipeline turbolinks-5

我正在使用默认安装了Turbolink的Rails 5.2应用程序。我了解到Turbolink在浏览网站时不会重新加载所有资产,因此该网站的某些JS组件将停止工作,直到我手动重新加载页面为止。在我的示例中,编辑帖子页面上的导航下拉菜单和保存按钮不起作用。我已经尝试从项目中完全删除Turbolink,这似乎可以解决问题,但由于生产中的性能原因,我知道需要Turbolink。据我了解,这就是turbolink在版本4之后默认为Rails的原因。我在线找到的解决方案是将以下代码添加到我的JS代码中:     document.addEventListener("turbolinks:load", function() { my_func(); })

此解决方案的问题是我不知道如何用该行包装代码。我正在使用具有4个JS文件的Bootstrap主题。这些文件中最小的文件有200行,并具有各种功能。使用Bootstrap主题时,如何解决此Turbolink问题?您是否将解决方案包装在整个javascript文件中?

1 个答案:

答案 0 :(得分:0)

您是否需要 Turbolink以提高性能?

通常,良好的Web缓存(资产为304),脚本的延迟和异步等将导致浏览器的行为几乎与启用Turbolinks相似。

但是,通常,如果您的主题和/或引导程序(我没有使用过)没有单个init函数,但是每个元素都在初始化,那么您可能会遇到麻烦。

我将浏览主题(或文档)的美化版本,以查看是否存在可以调用的常规init函数。

希望这会有所帮助。