如何在 Ruby On Rails 7 中使用 Import Maps 访问 JS 函数?

How access JS function using Import Maps in Ruby On Rails 7?

我是 JS 模块和 Import Map 的新手,现在我在 Rails 7 上使用 Ruby,但我找不到使它工作的方法:

Js模块(proposals.js):

function openProposalMirror() ...

application.js

import * as Proposal from "./proposals.js"

在视图中:

onclick="Proposal.openProposalMirror()"

error: Uncaught ReferenceError: Proposal is not defined

如何访问视图上的 openProposalMirror() 函数?

一种方法是将 Proposal 分配给对象 window.Proposal

你可以直接在application.js里面设置如下:

// proposals.js
function openProposalMirror() {}
export { openProposalMirror }

// application.js
import * as Proposal from "./proposals.js"
window.Proposal = Proposal

// view
onclick="Proposal.openProposalMirror()"

您还可以从 application.js 重新导出 Proposal,然后将其导入并分配给 <script> 标记(在视图中)中的对象 window.Proposal,如下所示:

// application.js
import * as Proposal from "./proposals.js"
export { Proposal };

// view
<%= javascript_importmap_tags %>

<script type="module">
  import { Proposal } from "application"
  window.Proposal = Proposal;
</script>