写点什么

Fable:将 F#转译成 JavaScript

  • 2016-08-25
  • 本文字数:726 字

    阅读完需:约 2 分钟

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

2016-08-25 19:001954
用户头像

发布了 1008 篇内容, 共 396.9 次阅读, 收获喜欢 345 次。

关注

评论

发布
暂无评论
发现更多内容

02 设计模式之策略模式

陈皮的JavaLib

Java 设计模式 策略模式 8月日更

iOS 开发没市场了吗?移动开发真的凉了吗? | 【话题讨论】

HelloWorld杰少

话题讨论 iOS Developer

12年高级工程师的“飞升之路”,面试题+笔记+项目实战

Geek_f90455

Java 程序员 后端

2020-2021阿里巴巴Java面试真题解析,详细的Java学习指南

Geek_f90455

Java 程序员 后端

Linux之iostat命令

入门小站

Linux

社会心理学-自尊

箭上有毒

读书笔记 8月日更

2020-2021华为Java面试真题,统统都会!

Geek_f90455

Java 程序员 后端

架构实战营 - 模块四作业

思梦乐

10天拿到字节跳动Java岗位offer,互联网行业“中年”危机

Geek_f90455

Java 程序员 后端

2020-2021华为Java面试真题,内含福利

Geek_f90455

Java 程序员 后端

2021Java开发现状分析,给大家安排上!

Geek_f90455

Java 程序员 后端

2021Java大厂高频面试题,原理+实战+视频+源码

Geek_f90455

Java 程序员 后端

Druid 从控制台(Druid console)中查询字段

HoneyMoose

【设计模式】建造者

Andy阿辉

C# 编程 后端 设计模式 8月日更

醍醐灌顶学习RTMP,从总体介绍到各个细节

hanaper

音视频

配置手机测试环境

IT蜗壳-Tango

8月日更

写作业写作业写作业

Nydia

在线分数加减乘除计算器

入门小站

工具

10万字Mysql实战文档,Java面试题汇总

Geek_f90455

Java 程序员 后端

设计电商秒杀系统

好吃不贵

即战力:职场上如鱼得水的一种能力

非著名程序员

个人成长 提升认知 职场成长 8月日更

SpringBoot 中使用Redis缓存

xcbeyond

redis 8月日更

3分钟搭建一个网站?腾讯云Serverless开发体验

Zhendong

腾讯云 Serverless 云原生 云开发

网络攻防学习笔记 Day93

穿过生命散发芬芳

网络攻防 8月日更

借助AI模型目标检测打标签工具 :Makesense.ai , 解放双手 ! ! !

码农的后花园

人工智能 深度学习 目标检测 yolo YOLOv5

webstorm之开发工具Vim(一)

Augus

8月日更

Git的实战教学 | 从0到1

卢卡多多

git 8月日更

15分钟的字节跳动视频面试,工作感悟

Geek_f90455

Java 程序员 后端

怎么对数据指标管理

水滴

指标体系 数据指标 8月日更 指标管理

Druid 从控制台(Druid console)中删除过滤器和运行查询

HoneyMoose

架构师实战营 模块十总结

代廉洁

架构实战营

Fable:将F#转译成JavaScript_.NET_Pierre-Luc Maheu_InfoQ精选文章