Как представить открытые функции модуля F # в Javascript через Fable? - PullRequest
0 голосов
/ 01 января 2019

Допустим, у меня есть следующий модуль f #:

module Sample =
    let Add x y = x + y
    let Subtract x y = x - y

Как настроить Fable или Webpack, чтобы при включении файла bundle.js, сгенерированного webpack, в мой index.html, я мог вызватьФункции модуля Sample из javascript, например:

<script>
   var myResult = Sample.Add(2,4)
</script>

Спасибо!

1 Ответ

0 голосов
/ 31 января 2019

Во-первых, вам нужно настроить webpack для генерации "библиотеки".

В вашем webpack.config.js ваш output ваш узел должен выглядеть так:

    output: {
        path: resolve('./output'),
        filename: '[name].js',
        libraryTarget: 'var',
        library: 'EntryPoint'
    },

Затем, чтобы предоставить чистый API для вызова из JavaScript, вы должны использовать интерфейс.

type Sample =
    abstract Add : int -> int -> int
    abstract Subtract : int -> int -> int

let private add x y = x + y

let api =
    { new Sample with
        member __.Add x y = add x y // You can call a local function
        member __.Subtract x y = x - y // You can implement the function directly in the interface 
    }

Затем из JavaScript вы можете сделать что-то подобное:

EntryPoint.api.Add(1, 2)
EntryPoint.api.Subtract(1, 2)
...