如何用AI技术降噪? QCon 广州“音视频架构实践”专场给你答案! 了解详情
写点什么

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

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

关注

评论

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

第九周学习心得

cc

备战金三银四,Java程序员看完这十本Java进阶必备书籍,薪资能涨20K

Java架构之路

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

学设计模式前先了解下设计模式分类

爱笑的小雨

设计模式

Mybatis【14】-- Mybatis如何实现一对多查询?

秦怀杂货店

数据库 mybatis

Java 程序经验小结:编程更好的使用泛型以替代原生态类型

后台技术汇

28天写作

周六

IT蜗壳-Tango

七日更

[JetPack] androidx.lifecycle库中ViewModel的新旧版本API差异

Changing Lin

android JetPack

牛掰!阿里人用7部分讲明白百亿级高并发系统(全彩版小册开源)

996小迁

Java 架构 面试 并发’

第九周命题作业

cc

如果公司要招一个人代替你

哈撒啦岛

产品经理训练营

核酸检测:让我明白AQS原理

叫练

AQS 共享锁 独占锁 可中断 条件队列

html容器以及CSS概述

程序员的时光

程序员 七日更 28天写作

设计模式【2.1】-- 简单工厂模式怎么演变成工厂方法模式?

秦怀杂货店

设计模式 工厂模式 23种设计模式

悟透前端 | 参悟Javascript中的call和apply

devpoint

JavaScript 大前端 call apply

Java开发不会Redis?Java开发掌握好Redis在面试中是个大加分项。

Java架构之路

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

张小龙:视频号是什么?| 视频号 28 天 (16)

赵新龙

28天写作

迁移到 Go Modules

Rayjun

Module Go 语言

一篇让你彻底了解http请求报文和响应报文的结构

Java架构师迁哥

小喜量化炒币机器人系统开发|小喜量化炒币机器人APP软件开发

系统开发

区块链技术解决监管痛点 首批6家券商加入“中证链”节点

CECBC

区块链

登录微软账号的Windows电脑如何远程?

BigYoung

微软 Windows 10 远程登录

2021最新总结一个90后 双非本末 5面蚂蚁 如何拿到年薪60W+?

比伯

Java 编程 程序员 架构 面试

宝马等支持为车辆创建“出生证明” 利用区块链技术跟踪车辆历史

CECBC

宝马

架构师训练营第九周课后作业

万有引力

第九周 性能优化(三) 作业 「架构师训练营 3 期」

胡云飞

产品经理训练营笔记-产品思维和产品意识(上)

.nil?

产品经理训练营

Elasticsearch Document 的 _version 元数据

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试

金融 真的需要区块链技术提升效率吗?

CECBC

金融

解密阿里线上问题诊断工具Arthas和jvm-sandbox

比伯

Java 编程 架构 面试 计算机

「云智公开课」百度沧海·存储

「云智公开课」百度沧海·存储

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