带控制台/节点的 Elm 中的 Hello World
Hello World in Elm with console / Node
在 Elm 中是否有一种简单、受支持的方式来编写控制台应用程序,最好是在 Node 中?如果是这样,"Hello, World" 是什么样子的?
我知道有一些软件包,其中大部分显然没有得到维护,声称可以做这样的事情,但它们在某种程度上看起来都像是拼凑的。
从 0.18 开始,Elm 是一种仅限前端的语言。将来它可能对后端友好。但现在不是吗。参见 here
然而,这并不意味着您不能将它与 Node.js 一起使用。您只需要使用 "worker" 模式并通过端口将所有数据传入和传出。例如:
port module Main exposing (..)
import Platform
port getName : (String -> msg) -> Sub msg
port sendGreeting : String -> Cmd msg
type alias Model = {}
type Msg =
GreetUser String
update msg model =
case msg of
GreetUser name -> (model, sendGreeting name)
main = Platform.program
{ init = ( {}, Cmd.none)
, update = update
, subscriptions = \model -> getName GreetUser
}
然后你可以通过 elm-make Main.elm --output elm.js
编译它,并像这样在 JS 中要求它:
const Elm = require("./elm.js");
const app = Elm.Main.worker();
app.ports.sendGreeting.subscribe((greeting) => console.log(greeting));
app.ports.getName.send("Noah")
有很多应用可以做到这一点,例如:
- elm-sketch-importer
- elm-verify-examples
- 榆树分析
- 榆树保险丝
在 Elm 中是否有一种简单、受支持的方式来编写控制台应用程序,最好是在 Node 中?如果是这样,"Hello, World" 是什么样子的?
我知道有一些软件包,其中大部分显然没有得到维护,声称可以做这样的事情,但它们在某种程度上看起来都像是拼凑的。
从 0.18 开始,Elm 是一种仅限前端的语言。将来它可能对后端友好。但现在不是吗。参见 here
然而,这并不意味着您不能将它与 Node.js 一起使用。您只需要使用 "worker" 模式并通过端口将所有数据传入和传出。例如:
port module Main exposing (..)
import Platform
port getName : (String -> msg) -> Sub msg
port sendGreeting : String -> Cmd msg
type alias Model = {}
type Msg =
GreetUser String
update msg model =
case msg of
GreetUser name -> (model, sendGreeting name)
main = Platform.program
{ init = ( {}, Cmd.none)
, update = update
, subscriptions = \model -> getName GreetUser
}
然后你可以通过 elm-make Main.elm --output elm.js
编译它,并像这样在 JS 中要求它:
const Elm = require("./elm.js");
const app = Elm.Main.worker();
app.ports.sendGreeting.subscribe((greeting) => console.log(greeting));
app.ports.getName.send("Noah")
有很多应用可以做到这一点,例如:
- elm-sketch-importer
- elm-verify-examples
- 榆树分析
- 榆树保险丝