Fable:將F#轉譯成JavaScript

weixin_33763244發表於2016-08-25

Fable是一個從F#到JavaScript的轉譯器。它可以將F#指令碼或者整個F#專案轉換成JavaScript。Fable通過一個命令列介面執行,讓開發人員既可以編譯一個.fsx指令碼,也可以編譯一整個專案。它作為一個npm包進行分發。

\\

Fable支援大部分F#核心庫和少量.NET BCL。它支援所有的基本型別,但有一些例外情況。一個值得注意的例外是async。Async計算表示式可以正常執行,但RunSynchronously不可用。

\\

使用者可以通過建立外掛擴充套件Fable。通常,Fable外掛用於在編譯過程中替換外部庫呼叫。使用者通過實現IReplacePlugin介面及其僅有的方法TryReplace建立外掛。下面是使用外掛替換System.Random的基本程式碼:

\\
\type RandomPlugin() =\   interface IReplacePlugin with\   member x.TryReplace com (info: Fable.ApplyInfo) =\     match info.ownerFullName with\     | \"System.Random\" -\u0026gt;\        match info.methodName with\        | \".ctor\" -\u0026gt; failwith \"TODO\"\        | \"Next\" -\u0026gt; failwith \"TODO\"\        | _ -\u0026gt; None\     | _ -\u0026gt; None\
\\

外掛可以用於處理更復雜的情況,比如轉換測試框架。目前,NUnit支援就是通過一個外掛將NUnit測試轉換成Mocha測試。

\\

使用者還可以使用Fable通過React Native建立移動應用React Native可以將React應用程式編譯成Android和iOS應用。Fable外掛提供了到React Native的繫結。一定要注意,通過React Native支援移動應用是一個試驗性特性,會經常變化。

\\

Fable是一個開源專案,託管在GitHub上。Fable官方網站提供了文件程式碼示例。舉一個在成熟專案中使用Fable的例子。Ionide是一個用於在VsCode和Atom中編輯F#的外掛,它自2.0版本開始就使用了Fable。

\\

檢視英文原文Transcompiling F# to JavaScript with Fable

相關文章