使用 ReasonML FFI
Using ReasonML FFI
我正在尝试了解 ReasonML 的 FFI(即 external
)用法。为此,我整理了以下代码(参见 Try ReasonML and Sketch.sh)
type dom;
type element;
[@bs.val]
external dom: dom = "document";
[@bs.send.pipe : dom]
external get_by_id: string => element = "getElementById";
let tag = document |> get_by_id("main");
但是,代码当前失败并出现以下错误:
尝试 ReasonML 错误
We've found a bug for you! OCaml preview 6:11-18
The value document can't be found
Sketch.sh 错误
Error: External identifiers must be functions
希望能帮助您回答以下问题:
- 上面的代码有什么问题?
- 我相信有多种方法可以配置上面的 FFI,例如使用
[@bs.scope]
- 如果有的话,这些方式有什么影响? --
这里有几个不同的问题:
您在最后一行使用了名为 document
的标识符,但尚未定义任何此类标识符。相反,您已将名称 dom
分配给 JavaScript 端的引用 document
。因此,最后一行应该是 let tag = dom |> get_by_id("main");
.
不幸的是,这在 "Try Reason" 中仍然不起作用,因为它在无法访问 document
.[=16= 的 Web Worker 中运行代码]
Sketch.sh 不使用 BuckleScript,因此不理解 BuckleScript FFI 注释。但是,您可以使用 https://nit.sketch.sh/,它确实有效。
我正在尝试了解 ReasonML 的 FFI(即 external
)用法。为此,我整理了以下代码(参见 Try ReasonML and Sketch.sh)
type dom;
type element;
[@bs.val]
external dom: dom = "document";
[@bs.send.pipe : dom]
external get_by_id: string => element = "getElementById";
let tag = document |> get_by_id("main");
但是,代码当前失败并出现以下错误:
尝试 ReasonML 错误
We've found a bug for you! OCaml preview 6:11-18
The value document can't be found
Sketch.sh 错误
Error: External identifiers must be functions
希望能帮助您回答以下问题:
- 上面的代码有什么问题?
- 我相信有多种方法可以配置上面的 FFI,例如使用
[@bs.scope]
- 如果有的话,这些方式有什么影响? --
这里有几个不同的问题:
您在最后一行使用了名为
document
的标识符,但尚未定义任何此类标识符。相反,您已将名称dom
分配给 JavaScript 端的引用document
。因此,最后一行应该是let tag = dom |> get_by_id("main");
.不幸的是,这在 "Try Reason" 中仍然不起作用,因为它在无法访问
document
.[=16= 的 Web Worker 中运行代码]Sketch.sh 不使用 BuckleScript,因此不理解 BuckleScript FFI 注释。但是,您可以使用 https://nit.sketch.sh/,它确实有效。