如何使用WebSharper翻译器?

任何人都可以解释如何结合F#使用WebSharper翻译器吗? 是将F#代码转换为JS本身还是使用F#编译器? 在第二种情况下,当在源中找到[]属性时,F#编译器正在做什么?编译器是否在任何情况下生成函数,并在运行时将JS构造为来自编译的字节码的反射或其他什么?     
已邀请:
我开发了WebSharper。好问题! 大致编译看起来像这样:
a.dll: a.fs b.fs c.fs
    fsc ...

a.dll.js: a.dll
    WebSharper.exe ..
当函数使用
[<JavaScript>]
[<ReflectedDefinition>]
的别名)进行注释时,F#编译器不仅将这些函数编译为.NET IL,还将其语法表示存储在DLL元数据中。该表示具有类型
Quotations.Expr
并且可以通过反射来恢复。看看
Quotations.DerivedPatterns.MethodWithReflectedDefinition
。 因此,WebSharper是源代码转换器的源代码,它非常直接(例如,保留lambdas)。在WebSharper 2.0中,我们有一种类似于Scheme的中间语言,但这只是为了帮助优化生成的代码。     

要回复问题请先登录注册