@lsmn
2016-08-24T05:53:44.000000Z
字数 1075
阅读 3166
F#
JavaScript
NUnit
Fable是一个从F#到Javascript的转译器。它可以将F#脚本或者整个F#项目转换成Javascript。Fable通过一个命令行界面运行,让开发人员既可以编译一个.fsx脚本,也可以编译一整个项目。它作为一个npm包进行分发。
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" ->
match info.methodName with
| ".ctor" -> failwith "TODO"
| "Next" -> failwith "TODO"
| _ -> None
| _ -> 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。