在没有安装 Node 的情况下从 Elixir 代码调用 JavaScript

Call JavaScript from Elixir code without Node install

我正在寻找一种无需安装即可从 Elixir .leex 文件中调用客户端 JavaScript 代码的方法 Node.js

我的目标是将 html 转换为图像位串,类似这个库:http://html2canvas.hertzen.com/

我也看过 https://github.com/revelrylabs/elixir-nodejs 作为例子。

在 .*eex 文件中,您可以将 javascript 作为字符串注入到您的元素中,它应该可以工作。对于简单的 js,我在我自己的 .ex 文件中的 heex 符号中执行此操作。例如,

<button onclick="(() => document.documentElement.scrollTop = 0)()">
  Scroll to top
</button>

如果您的 html2canvas 函数是在交付给客户端的 javascript 包中定义的,那么触发您在 .*eex 文件中作为字符串编写的函数应该可以工作。

在我看来,对于非平凡的 js,这真的不应该这样做。如果您使用的是 Phoenix LiveView,请查看 hooks。您可以编写自定义 js 并通过挂钩触发它,或者使用挂钩推送您将在 Elixir 中处理服务器端的事件。