写点什么

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:001970
用户头像

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

关注

评论

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

GitHub开源的10个超棒后台管理面板

不脱发的程序猿

GitHub 开源 后台管理面板

iOS面试大全从面试的准备和流程到算法和数据结构以及计算机基础知识

iOSer

ios 面试 面向协议protocol编程 iOS 知识体系

强化基于位置的4种营销策略

郑州埃文科技

IP 营销 ISP

Cilium 1.10 重磅发布!】支持 Wireguard, BGP, Egress IP 网关, XDP 负载均衡, 阿里云集成

公众号:云原生Serverless

云原生 cilium cni

探索专有领域的端到端ASR解决之道

华为云开发者联盟

端到端 ASR 自动语音识别 语境偏移 专有领域

不同数据库模式下DATE类型的行为解析

华为云开发者联盟

MySQL oracle GaussDB(DWS) TD DATE类型

将模型转为NNIE框架支持的wk模型第一步:tensorflow->caffe

华为云开发者联盟

tensorflow caffe NNIE框架 wk模型 mxnet

☕【JVM 技术之旅】深入JVM原理分析synchronized

洛神灬殇

synchronized 重量级锁 5月日更 同步锁 ObjectMontior

屏幕共享的实现与应用

anyRTC开发者

音视频 WebRTC RTC sdk

驾云驭能,云科技点燃制造创新之旅!

亚马逊云科技 (Amazon Web Services)

助力秋招第二弹:Java并发编程知识梳理

北游学Java

Java 面试 秋招

NUCLEO-L432KC实现ADC配置(STM32L432KC)

不脱发的程序猿

嵌入式 单片机 NUCLEO-L432KC STM32L432KC 光敏电阻传感器

“零信任产业标准工作组”再度升级,持续促进国内零信任产业的协同发展

iOS 面试策略之经验之谈- App的测试和上架

iOSer

ios 面试 app上架 app测试

全新F1洞察精彩亮相,帮你理解赛道上的瞬间决定!

亚马逊云科技 (Amazon Web Services)

Django 之路由篇

若尘

django Python编程 路由 5月日更

详解 WebRTC 高音质低延时的背后 — AGC(自动增益控制)

阿里云CloudImagine

阿里云 WebRTC 3A算法 音频技术 视频云

再不解决延迟不当,小心你的内存被打爆

华为云开发者联盟

线程 延迟 内存 并发 Sleep

手把手带你体验 Amazon Graviton2 的高性价比!文末有惊喜

亚马逊云科技 (Amazon Web Services)

iOS 面试策略之经验之谈-面向协议的编程

iOSer

ios swift 面试 面向协议protocol编程 面向协议编程

农产品区块链溯源平台建设解决方案,健全食品安全体系

源中瑞-龙先生

区块链 溯源 食品安全

强劲性能释放释放:联想消费新品笔记本震撼发布

E科讯

☕【JVM 技术之旅】攻克技术盲点之“JVM常量池们“

洛神灬殇

JVM 5月日更 字符串常量池 静态常量池 运行时常量池

详解RS232、RS485、RS422、串口和握手

不脱发的程序猿

串口 通信总线 RS232、RS485、RS422 握手通信

提高建模效率:自动化机器学习之贝叶斯优化综述

索信达控股

机器学习 自动化 金融科技 贝叶斯公式 产品建模

一文通关苦涩难懂的Java泛型

程序猿阿星

泛型 java基础 Java泛型

字节、美团等客户与华为联合创新DCI智能控制器,共筑互联网基础设施新生态

5G掀起工业互联网浪潮,水泥厂智能管理模式收效颇丰

一只数据鲸鱼

数据可视化 工业互联网 智慧工厂 水泥厂 智能工厂

iOS 面试策略之经验之谈-架构的选择

iOSer

ios 架构

阿里P9架构师力荐:Java面试必刷的17套一线大厂真题(含答案)

Java架构追梦

Java 阿里巴巴 架构 腾讯 面试

打造生态“朋友圈”,英特尔以生态之道培育AI创新“大气候”

E科讯

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