如何使用WebSharper翻译器?

时间:2010-10-12 08:26:12

标签: f# websharper

有没有人能解释如何将WebSharper翻译与F#结合使用? 它是将F#代码转换为JS本身还是使用F#编译器?

在第二种情况下,当在源中找到[]属性时,F#编译器正在做什么?编译器是否在任何情况下生成函数,并在运行时将JS构造为来自编译的字节码的反射或其他什么?

1 个答案:

答案 0 :(得分:6)

我开发了WebSharper。好问题!

粗略的编译看起来像这样:

a.dll: a.fs b.fs c.fs
    fsc ...

a.dll.js: a.dll
    WebSharper.exe ..

当函数使用[<JavaScript>]注释时,[<ReflectedDefinition>]Quotations.Expr的别名,F#编译器不仅将这些函数编译为.NET IL,还将其语法表示存储在DLL中元数据。此表示形式为Quotations.DerivedPatterns.MethodWithReflectedDefinition,可以通过反射恢复。看看{{1}}。

因此,WebSharper是源代码转换器的源代码,它非常直接(例如,保留lambdas)。在WebSharper 2.0中,我们有一个类似于Scheme的中间语言,但这只是为了帮助优化生成的代码。