BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Fable:将F#转译成JavaScript

| 作者 Pierre-Luc Maheu 关注 3 他的粉丝 ,译者 谢丽 关注 9 他的粉丝 发布于 2016年8月26日. 估计阅读时间: 3 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

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。

查看英文原文Transcompiling F# to JavaScript with Fable

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT