如何通过寓言将F#模块的公共功能暴露给Javascript?

时间:2019-01-01 17:19:58

标签: javascript f# fable-f#

假设我有以下f#模块:

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

如何配置寓言或Webpack,以便在将webpack生成的bundle.js文件包含到index.html中时,可以从javascript调用模块Sample的函数,如下所示:

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

谢谢!

1 个答案:

答案 0 :(得分:0)

首先,您需要设置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)