2014-01-23 51 views
0

我开发了F# to JavaScript(和其他动态类型语言)编译器。编译器本身是强大的,从某种意义上说,它能够翻译许多F#结构,另一方面,它不是那么用户友好。您仍然必须使用命令行可执行文件将该项目转换为JavaScript代码。F#用于JavaScript编译器的F#项目模板

这是用户不友好的原因很多,其中之一是调试。所以,我想创建一个项目模板(带有基本的目录结构),它允许程序员将代码编写为一个普通的F#项目,然后当他点击绿色的“运行”按钮时,编译过程应该开始,最后浏览器应该打开一个运行生成的JavaScript代码的网页。任何曾经使用Websharper或Pit的人都知道我在说什么。

当然,如果翻译完成其他语言,我希望“运行”按钮的行为不同。基本上,另一个模板应该完成这项工作。

所以我的问题是:除了编译前和编译后阶段吗?我确切地说,编译器也可以用作库而不是二进制可执行文件。

任何有用的文档参考表示赞赏。

+0

看起来像一个很有趣的项目,不错的工作! –

回答

4

FunScript项目(F#到JavaScript编译器)有采用launcher(由Tomas Petricek写的),编译标记模块example项目,启动一个最小的Web服务器,并在浏览器中打开默认的网页。

FunScript帆布样本:

[<ReflectedDefinition>] 
module Program 

open FunScript 

let main() = 
    let canvas = Globals.document.getElementsByTagName_canvas().[0] 
    canvas.width <- 1000. 
    canvas.height <- 800. 
    let ctx = canvas.getContext_2d() 
    ctx.fillStyle <- "rgb(200,0,0)" 
    ctx.fillRect (10., 10., 55., 50.); 
    ctx.fillStyle <- "rgba(0, 0, 200, 0.5)" 
    ctx.fillRect (30., 30., 55., 50.) 

do Runtime.Run(directory="Web") 

Runtime.Run做的工作。

参见:https://github.com/ZachBray/FunScript/blob/master/Examples/Shared/Launcher.fs

有关构建F#项目信息模板丹莫尔已经使用SideWaffle建成了一批网页模板:http://bloggemdano.blogspot.co.uk/2013/12/simpleweb-and-servicestack-templates.html