我是榆树的新手,一直在阅读解码库
https://github.com/elm-lang/core/blob/eb6ecefb9e001a58746110cdda7e7b366e577b2f/src/Json/Decode.elm
然而,我在第 55 行有点困惑,他们公开了一个似乎链接到 javascript 文件(Elm.Kernel.Json)的库,此外他们使用了一个像 Elm.Kernel.Json.decodeString 这样的变量,它似乎链接到一个javascript 变量在相应的文件中称为 _json_decodeString。
很确定我遗漏了一些东西,但不知道是什么?
Elm 编译为 JS 并最终依赖于 JS 代码来工作。但是为了提供类型安全的保证,对 JS 代码的访问受到严格限制。
所以在实践中,使用 JS 的唯一认可的方式是通过port。
您正在查看的是核心 Elm 库,这些库使用特殊技术直接访问 JS 库。这些技术没有记录在案,因为它们不应该被遵循。但由于代码是开源的,逆向工程是可能的。您会在 Internet 上找到使用这些技术的库(例如添加缺少的 web api),但您不会在http://package.elm-lang.org/上找到它们。