榆树导入Js图书馆

时间:2017-11-11 13:02:04

标签: elm

我是elm的新手,并且正在阅读

中的Decode库
  

https://github.com/elm-lang/core/blob/eb6ecefb9e001a58746110cdda7e7b366e577b2f/src/Json/Decode.elm

但是我在第55行有点困惑他们暴露了一个似乎链接到javascript文件(Elm.Kernel.Json)的库,另外他们使用了一个似乎是Elm.Kernel.Json.decodeString的变量链接到相应文件中名为_json_decodeString的javascript varable。

  1. 他们是如何将js库导入elm的?
  2. 它们如何将 json 变量与elm文件中的变量相关联?
  3. 很确定我错过了什么,但不知道是什么?

1 个答案:

答案 0 :(得分:4)

Elm编译成JS并最终依赖JS代码工作。但是,为了提供类型安全的保证,严格限制对JS代码的访问。

所以在实践中,使用JS的唯一认可方式是通过port

您正在研究的是核心Elm库,它们使用特殊技术直接访问JS库。这些技术没有记录,因为它们不应该被遵循。但由于代码是开源的,因此可以进行逆向工程。你会在互联网上找到使用这些技术的图书馆(例如add missing web apis),但你不会在http://package.elm-lang.org/上找到它们。