数字化转型浪潮中,金融行业如何破局?获取学习视频 了解详情
写点什么

FunScript: 发挥 F#威力编写 Web 应用

  • 2013 年 6 月 27 日
  • 本文字数:853 字

    阅读完需:约 3 分钟

FunScript 是一种 F#编译器程序库,能让开发者使用 F#编写单页 web 应用,并在浏览器中或通过 Node.js 在服务端运行。

FunScript 有两个组件:编译器程序库将 F#代码编译为 JavaScript,而 TypeScript 类型提供器(typeprovider)将各种 JavaScript 库的 API 和 DOM 暴露为静态类型。

一个简单的使用 FunScript 编写的“Hello,World”的例子如下:

复制代码
[<FunScript.JS>]
module Page
open FunScript
open FunScript.TypeScript
type lib = Api<"lib.d.ts">
let hello () = lib.window.alert("Hello, World!")
do Runtime.Run(components=Interop.Components.all)

每一个模块都保存成“.fs”文件并且必须使用 FunScript.JS 的属性进行注解。可以通过类型 lib 去获得页面的 DOM。最后一行代码是用来开启启动器的。该模块默认保存在简单的 web 服务器中。

可以使用 Visual Studio、MonoDevelop 或者简单的文本编辑器去编写 FunScript 的模块。该程序库功能强大的原因在于它能让开发者访问各种 JavaScript 库中的类型,并可以获得自动完成和提示的特性。这些类型是通过 TypeScript 提供的,目前 FunScript GitHub 项目中包含了 HTML DOM、jQuery、jQueryUI、Node.js、Goole Maps 和交互功能丰富的 JavaScript 图表库 HighCharts 等的类型定义。更多数量的 JS 类型定义可以在这里找到。

使用FunScript 去编写web 应用的另一个优势在于能充分利用F#的泛型和异步编程功能。此外,开发者能使用F# 3.0 的类型提供器去和JSON 数据及REST API 打交道。所有的这些都同时保持了F#的简洁。

FunScript 的网站上有大量的例子,包括使用F#的世界银行数据图表使用F#检索电影数据库。更多的例子可以在项目的GitHub 页面找到。

FunScript 是基于 Apache License 2.0 的开源项目。

查看英文原文: FunScript: Using the Power of F# for Writing Web Apps


感谢赵震一对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2013 年 6 月 27 日 11:052154
用户头像

发布了 81 篇内容, 共 18.6 次阅读, 收获喜欢 2 次。

关注

评论

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

第15周作业

Vincent

极客时间 极客大学

一站式接口测试服务体系建设

DrawDe朱

接口自动化 自动化测试平台

第七周作业

alpha

极客大学架构师训练营

CAP原理及作业

橘子皮嚼着不脆

Spring+多线程+集合+MVC+数据结构算法 +MyBatis源码学习笔记分享

Java架构之路

Java 程序员 架构 面试 编程语言

GitHub上最火的SpringCloud微服务商城系统项目,附全套教程

Java架构之路

Java 程序员 架构 面试 编程语言

第二章课后习题

博博

第二章学习笔记

博博

Java核心基础——反射

老农小江

Java 基础

Netty源码解析 -- PoolChunk实现原理

binecy

源码 Netty 内存布局

Fedora32安装和卸载openjdk11

ilovealt

Linux Openjdk

架构师训练营 1 期第 7 周:性能优化(一)- 总结

piercebn

极客大学架构师训练营

单例模式样例

jorden wang

Spring Data Jpa deleteAll大概了解

ilovealt

Java jpa

「架构师训练营」第 3周作业

小黄鱼

极客大学架构师训练营

Week3 - 练习

evildracula

架构

工作1-3年的程序员,应该具备怎么样的技术能力?该如何提升?

Java架构师迁哥

第三周 单例

Geek_9527

读完Java名著《Effective Java》: 我整理了这50条技巧

Java架构之路

Java 程序员 架构 面试 编程语言

第7周总结

alpha

极客大学架构师训练营

架构师训练营第三周学习笔记

邢永春

架构师入门学习感悟三

笑春风

字节三面被挂后,狂刷算法,意外斩获阿里offer,定级P6+

互联网架构师小马

Java 编程 字节跳动 面试 算法

Java键值对排序

ilovealt

Java

全链路压测在信用卡行业的实践

DrawDe朱

全链路压测

架构师训练营第三周作业

邢永春

囚徒困境:跳脱思维的牢笼

多元思维力-晓陶

认知 思维 多元思维力

Week3 - 代码重构

evildracula

学习 架构

极客时间架构师训练营 1 期 - 第 7周总结

Kaven

极客时间架构师培训 1 期 - 第 7 周作业

Kaven

架构师训练营第七周

我是谁

极客大学架构师训练营

“一键上链”技术大牛教你快速构建链上应用

“一键上链”技术大牛教你快速构建链上应用

FunScript:发挥F#威力编写Web应用_开源_Abel Avram_InfoQ精选文章