使用WebSharper为JS编译F#引用

时间:2017-03-22 09:03:34

标签: f# websharper

我需要将引号编译成JS字符串(我的主要目标是在F#中编写MongoDB MapReduce作业)。我找到了example代码:

open Microsoft.FSharp.Quotations
open WebSharper
type AR = IntelliFactory.Core.AssemblyResolution.AssemblyResolver
module FE = WebSharper.Compiler.FrontEnd

let compile (expr: Expr) : string option =
    let loader = FE.Loader.Create (AR.Create()) (eprintfn "%O")
    let options =
        { FE.Options.Default with
            References =
                List.map loader.LoadFile [
                    "WebSharper.Main.dll"
                    "WebSharper.Collections.dll"
                    "WebSharper.Control.dll"
                ] }
    let compiler = FE.Prepare options (eprintfn "%O")
    compiler.Compile expr
    |> Option.map (fun e -> e.ReadableJavaScript)

但是编译器输出的是一个简单的函数,比如

<@ fun x -> x + 2 @>

非常丑陋

(function()
{
var Global=this,Runtime=this.IntelliFactory.Runtime,EntryPoint;
 Runtime.Define(Global,{
  WebSharper:{
   EntryPoint:{
    Example:Runtime.Field(function()
    {
     return function(x)
     {
      return x+2;
     };
    })
   }
  }
 });
 Runtime.OnInit(function()
 {
  return EntryPoint=Runtime.Safe(Global.WebSharper.EntryPoint);
 });
 Runtime.OnLoad(function()
 {
  EntryPoint.Example();
  return;
 });
}());    

我没有找到任何选项来禁用输出中的所有WebSharper内容。有谁知道这样做的方法?

0 个答案:

没有答案