我有一个新的Rails 7应用程序。 我目前正在尝试学习自Rails 5以来所有的新功能。我想在我的javascript文件中使用以下代码,但是到目前为止,我得到了以下错误:未捕获的引用错误:$未定义
$(document).on("turbo:load", () => {
console.log("turbo!");
});
这里有另外两个相关的文件。如果我需要发布其他东西,请告诉我。
importmap.rb
pin "application", preload: true
pin "jquery", to: "https://ga.jspm.io/npm:jquery@3.6.0/dist/jquery.js", preload: true
pin "@hotwired/turbo-rails", to: "turbo.min.js", preload: true
pin "@hotwired/stimulus", to: "stimulus.min.js", preload: true
pin "@hotwired/stimulus-loading", to: "stimulus-loading.js", preload: true
pin "el-transition", to: "https://ga.jspm.io/npm:el-transition@0.0.7/index.js"
pin_all_from "app/javascript/controllers", under: "controllers"
application.js
import "@hotwired/turbo-rails"
import "jquery"
$(document).on("turbo:load", () => {
console.log("turbo!");
});
./bin/importmap pin jquery@3.6.3
和./bin/importmap pin jquery@3.6.3 --from jsdelivr
会给我不同版本的jquery吗?我觉得我一定理解错了什么,这似乎不太对。我感觉自己像疯了一样。 - Fred Willmorejspm
是用于 ESM 模块的。由于模块的构建/初始化方式,$
和jQuery
不会被全局暴露。我猜还涉及一些额外的处理,因为这部分已经更改,不再是全局的 jQuery。(jsdelivr 也有 esm 选项,可以实现相同的功能)。 - Alex