“导入本机”如何在Elm中工作

时间:2016-07-08 01:04:23

标签: d3.js elm

在试图加入Elm and D3的旧库中,我注意到某些语句导入了Native JavaScript ...

import Native.D3.Render
import Native.D3.Selection
import Native.D3.Transition

我们可以使用elm-make编译原生JavaScript吗?我知道我们不鼓励编写自己的JavaScript(因为它不是类型安全的),但有时它是必要的。

elm-package.json显示这是用0.150.16编写的,所以它不会在新的语法更改下编译。

这是elm-package.json

{
    "version": "1.0.0",
    "summary": "helpful summary of your project, less than 80 characters",
    "repository": "https://github.com/user/project.git",
    "license": "BSD3",
    "source-directories": [
        "."
    ],
    "native-modules": true,
    "exposed-modules": [],
    "dependencies": {
        "elm-lang/core": "4.0.1 <= v < 5.0.0",
        "elm-lang/html": "1.0.0 <= v < 2.0.0",
        "elm-lang/svg": "1.0.0 <= v < 2.0.0",
        "evancz/elm-graphics": "1.0.0 <= v < 2.0.0"
    },
    "elm-version": "0.17.0 <= v < 0.18.0"
}

带有导入本机库的功能

import Native.Test
import Html exposing (text)

main = text "Hello, World!"

编译

john@miCasa:~/Documents/Elm$ elm-make test-native.elm
Success! Compiled 1 module.                                         
Successfully generated index.html

查看本机代码的动机来自于查看名为Elm-D3的库,该库使用本机类型。基本上,他创建了一个映射到d3js库的D3类型。一些问题:

  • 此库将Elm 0.16绑定到D3 3.0
  • 榆树现在为0.17,D3JS为4.0

但是,目前这个话题似乎有一个活跃的issue

1 个答案:

答案 0 :(得分:0)

部分Native模块在JS中实现。

当您构建使用本机库的应用程序时,该JS代码将被转移到elm-make创建的包中。

这是a link to an article about writing a Native function