NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

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

关注

评论

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

企业全球化出海技术体系建设实录【专题合集】

阿里技术

技术专题合集 全球化技术能力

cost量化分析

GreatSQL

MySQL 运维 :MySQL 数据库 greatsql greatsql社区

还不知道如何在java中终止一个线程?快来,一文给你揭秘

程序那些事

线程 多线程 「Java 25周年」 程序那些事 java

还在curd吗?封装属于自己的Spring-Boot-Starter

做梦都在改BUG

Java spring Spring Boot Starter

备战两个月斩获阿里offer,这份《Java高分面试指南》也太顶了

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

2023年深圳.NET线下技术沙龙要开始了!名额有限,报名从速

MASA技术团队

.net MASA

开源工具系列5:DependencyCheck

HummerCloud

共建区块链生态,旺链科技获颁2022年度FISCO BCOS产业应用合作伙伴

旺链科技

区块链 区块链+

99%都不知道的ins保存小技巧,快收藏起来!

frank

ins

MegEngine 使用小技巧:借助 DataLoader 获取分批数据

MegEngineBot

深度学习 开源 模型训练 数据预处理 MegEngine

FTP VS镭速传输,小文件传输技术内有乾坤

镭速

ArchKeeper(开篇):架构守护平台的问题与理念

京东科技开发者

架构 敏捷 系统架构 腐化治理 企业号 3 月 PK 榜

Cloud Kernel SIG月度动态:发布 ANCK 新版本及 Plugsched v1.2.0

OpenAnolis小助手

内核 龙蜥社区 sig anck CVE修复

详解数仓中sequence的应用场景及优化

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

软件测试/测试开发 | Spring Boot 集成 Swagger

测试人

软件测试 springboot 测试发开

贴合运维业务场景的告警聚合实现——以Zabbix为例

观纵科技

zabbix 运维监控 IT运维

GreptimeDB v0.1 发布|原生支持 Python, PromQL 和对象存储

Greptime 格睿科技

云原生 时序数据库 PromQL

Matlab实现图像分割

timerring

图像分割

寻找机器人:为什么我们不应该“隐藏人类”

开源雨林

开源 聊天机器人 ChatGPT

龙蜥白皮书精选:面向 DPU 场景的软硬协同协议栈

OpenAnolis小助手

开源 云原生 内核 SMC协议栈 TCP应用

「金三银四」这些面试题,看看你会答几道?

王中阳Go

Go 后端 面试题 简历优化 就业辅导

React Hooks源码深度解析

京东科技开发者

函数 React Hooks 企业号 3 月 PK 榜

如何使用openEuler用户软件仓(EUR)

openEuler

Linux 操作系统 openEuler rpm 软件包

Python从零到壹丨详解图像平滑的两种非线性滤波方法

华为云开发者联盟

Python 人工智能 华为云 华为云开发者联盟 企业号 3 月 PK 榜

中建信息举办2022年度核心生态伙伴高峰论坛

Geek_2d6073

全球化趋势下,如何建设稳定高效的技术能力?

阿里技术

全球化技术

聊聊游戏业务怎么用高斯Redis

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

Redis实现分布式锁的几种方案

GreatSQL

greatsql greatsql社区

MySQL 8.0数据字典有什么变化

GreatSQL

MySQL MySQL 运维 :MySQL 数据库 greatsql greatsql社区

删库跑路现场还原

Yestodorrow

系统稳定性

API Gateway vs Load Balancer:选择适合你的网络流量管理组件

API7.ai 技术团队

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