写点什么

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

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

关注

评论

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

成为数字游民,他们为何「All in Web3」?

One Block Community

程序员 web3 数字游民

广告业务存储神器:华为云GaussDB(for Redis)

秃头也爱科技

Linux 文件基本属性

芯动大师

chmod 11月月更 Linux文件属主 charp chown

C++--- 类型萃取 ---is_void && is_null_pointer

桑榆

C++ STL 11月月更

“链游版羊了个羊”Matching Game即将登陆Gate

股市老人

【Python 基础学习】-运算符

度假的小鱼

11月月更 Python运算符 Python运算符优先级

华为云GaussDB(for Influx):让智能电网时序数据处理更高效

路过的憨憨

华为

软件架构的定义与分类

穿过生命散发芬芳

架构 11月月更

Web3领域首个三消小游戏Matching Game,近30交易量破800万U

BlockChain先知

JavaWeb项目部署到腾讯云教学

陈老老老板

腾讯云 javaWeb java; 11月月更

基于鸿蒙系统的commonEvent和限制与约束原子化服务代码简析

恒山其若陋兮

前端 11月月更

聊聊Mybatis的类型转换注册类TypeHandlerRegistry

急需上岸的小谢

11月月更

感恩每一位 RockStar!

StarRocks

数据库

支持向量机-非线性SVM与核函数

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

支持向量机-探索核函数在不同数据集上的表现

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

2022-11-24:小团在地图上放了3个定位装置,想依赖他们进行定位! 地图是一个n*n的棋盘, 有3个定位装置(x1,y1),(x2,y2),(x3,y3),每个值均在[1,n]内。 小团在(a,

福大大架构师每日一题

golang 算法 福大大

【web 开发基础】PHP 中的可变参数个数的函数 (34)

迷彩

函数 web开发基础 11月月更 可变个数参数的函数

SpringBoot整合EasyExcel超详细教学

陈老老老板

spring-boot 11月月更

如何使用Git进行代码托管

我是一个茶壶

git 代码托管 11月月更

一文了解 Go 的复合数据类型(数组、切片 Slice、Map)

陈明勇

Go golang go基础 11月月更

【Python 基础学习】-变量和常量、输入输出

度假的小鱼

11月月更 Python变量常量 Python变量

China SAFe Day 2022中国规模化敏捷大会圆满落幕!

爱吃鱼的小雨

敏捷 safe 规模化敏捷 SAFeDay

Node.js在Buffers对象在数据报的表现交互在Modules的实战心得

恒山其若陋兮

前端 11月月更

Springboot超详细入门

陈老老老板

spring-boot 11月月更

性能测试知识科普(六):三大模型

老张

性能测试 数据模型 业务模型 流量模型

kitti数据集在3D目标检测中的入门(二)可视化详解

Studying_swz

人工智能 11月月更

华为云区块链三大核心技术国际标准立项通过

科技怪授

【Python 基础学习】-基础语法

度假的小鱼

11月月更 Python基础语法

Mysql基础超详细讲解

陈老老老板

MySQL 数据库 11月月更

Timers和进程在Client里的性能表现实战心得【Node.js】

恒山其若陋兮

前端 11月月更

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