2014-01-23 86 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