【问题标题】:Rails 6 upgrading from turbolinks to turbo. How to require turbo-rails in application.js?Rails 6 从 turbolinks 升级到 turbo。如何在 application.js 中要求 turbo-rails?
【发布时间】:2021-08-05 02:56:36
【问题描述】:

我正在开发一个遗留应用程序,最近升级到 Rails 6.0.4。该应用使用sprockets,而不是webpacker

现在我正试图离开turbolinks 并转到turbo-rails。本应用中的js文件均使用链轮require指令,如:

//= require jquery3
//= require turbolinks

我似乎不知道如何将此应用于turbo-rails。我已经安装了 gem 并删除了 turbolinks,但是我找到的所有文档都有 import "@hotwired/turbo-rails" 之类的东西。

我对前端的东西不是很了解,但我相信这是一种不同的(ES6?)语法。这个应用程序目前在sprockets 3.7.2 上,我认为 sprockets 直到版本 4 才支持 ES6。如果可能的话,我想避免这次升级涉及更多的依赖项......

是否可以像我目前拥有 //= require turbolinks 一样使用 //= require turbo?'

【问题讨论】:

  • 我看到有一个/app/assets/javascript/turbo.js 文件github.com/hotwired/turbo-rails/blob/main/app/assets/…,看起来你可以这样做//= require turbo,因为这是文件的名称,并且 sprockets 可以在 gems 中的这些文件夹中查找文件。不知道这是否足够,但它应该是一个开始
  • @arieljuod 谢谢。谢谢,我之前尝试过,但它似乎不适用于我的$(document).on("turbolinks:load" 但我猜资产编译期间没有错误的事实意味着正在找到文件。所以我又试了一次,现在我在 web 控制台中注意到了这个错误:Uncaught SyntaxError: export declarations may only appear at top level of a module 指向Uncaught SyntaxError: export declarations may only appear at top level of a module。所以我猜文件 is 被找到,但还有其他问题??
  • 我不希望 turbo 有相同的事件。我会考虑你是否应该先离开 Sprockets,然后切换到涡轮增压以避免不得不做一堆重复的工作。
  • //= require turbo 解决了我的问题,因为我不需要或使用 webpack/webpacker

标签: ruby-on-rails ruby web turbolinks


【解决方案1】:

为了使用turbo-rails,您必须设置资产管道以转译 ES6。这对于我的sprockets (3.7.2) 版本是不可能的,所以我有两个选择:

  • 升级到 sprockets 4
  • 转而使用 webpacker 作为资产管道的 Javascript 部分

有了其中一个,我应该可以使用import "@hotwired/turbo-rails"

【讨论】:

  • 即使使用较新版本的链轮,您也需要使用 //= require turbo not import "@hotwired/turbo-rails"
猜你喜欢
  • 1970-01-01
  • 2022-08-22
  • 1970-01-01
  • 1970-01-01
  • 2021-12-21
  • 1970-01-01
  • 2021-11-17
  • 2021-06-11
  • 2022-08-13
相关资源
最近更新 更多