手機Web開發框架 mobl

webphp 14年前發布 | 7K 次閱讀 Carrier IQ

mobl 是一個新的開源的編程語言,主要用于加速手機應用的開發,mobl 可方便構建手機 web 應用程序,包括 iOS、Android 和其他支持 HTML5 技術的手機。

<DIV class=uchome-message-pic>

</DIV>

Mobl是一種外部DSL,它的目的是要把代碼編譯到HTML5中,從而為移動設備創建跨瀏覽器的應用程序。Zef Hemel已經在WebDSL項目的啟發下把它開發出來了,作為模型驅動工程和領域特定語言博士論文的一部分。InfoQ與Hemel進行了一次討論,試圖發現使用這種方法與編寫移動應用更多相關的內容。

Mobl使用一種與JavaScript非常類似的腳本語言實現了靜態類型的推斷語言。該語言擁有以下頂級結構: 實體(entities)、類型(types)、函數(functions)、控件(controls)、屏幕(screens)、樣式(styles )和設備(services)。實體是在本地存儲中持久化的數據元素,而類型是一種供我們使用的不穩定的數據。函數與那些定義在JavaScript以及能夠調用JavaScript代碼的語言中的函數類似。UI是由屏幕組成的,屏幕中包含各種組件以及容器控件,并且在控件上會有附加的事件處理器。“Hello World”示例類似于下面這樣:

screen root() {
header("Hello world")
}

這里是另一個使用自定義控件的示例:

// Custom control:
control sayHello(name : String) {
  label(name) // using the label control
}

screen root() { // Main module definition
  sayHello("Hello World") // using my custom control
}

我們會發現,UI并沒有遵循MVC模式,控件可以包含本地的狀態和邏輯。盡管我們可以這么做,但是Hemel還是建議“把所有復雜的邏輯放到函數中,并且不要把那些函數放在用戶界面代碼中。” The UI’s look and feel is created with styles similar to CSS.

Mobl擁有創建面向Web服務接口的內建語法。以下是用于獲取推ter趨勢主題的服務示例:

service 推ter {
resource trends() : JSON {
uri = "/_proxy/api.推ter.com/1/trends.json"
}
}

數據是以JSON格式在應用程序和服務之間傳遞的,JSON是“Mobl的動態類型的子類型,是一種特殊的類型,能夠讓你程序的各個部分使用動態類型定義,”這是文檔(PDF)中所說的。

所有使用Mobl編寫的代碼在保存每個文件的時候會自動編譯到HTML5的元素之中。應用程序能夠在支持HTML5的瀏覽器上運行,瀏覽器需要支持以下HTML5特性:

本地緩存

地理位置(mobl::location),這樣你可以請求用戶當前的GPS位置

畫板(mobl::canvas),用于基本的2D繪畫

通知(mobl::notify): 屏幕上的通知。(盡管沒有太多瀏覽器支持)

加速計(mobl::accelerometer): 讀取移動設備的加速計數據(當前只在iPhone和iPad上有效,其它平臺暫時還不支持這個API)

WebSockets(mobl::socket): 使用socket.io與服務器進行數據流形式的通信。

Hemel說,它當前專注于讓Mobl能夠在基于WebKit的瀏覽器工作,因為那些瀏覽器在移動設備上實現了最多的HTML5特性,但是對于讓它在Firefox和Opera上工作也做了一些努力,并且,當windows Phone7支持HTML5的時候,也會擴展到那上面。Mobl應用程序可以直接部署或者通過PhoneGap部署:

我們可以使用PhoneGap部署Mobl應用程序。PhoneGap讓你可以使用web技術為各種平臺——包括iOS、Android、 Windows Mobile和BlackBerry等——構建本地應用程序。我正在做的一件工作就是要封裝專門針對PhoneGap的API,從而以Mobl庫的形式訪問電話功能,像訪問照相機以及電話的聯系人列表等等。這項工作進展良好。

Mobl還帶有Eclipse插件,讓我們可以在Windows、Linux以及Max OS上開發應用程序,并且已經基于MIT許可發布了。

查看英文原文:Mobl – A New DSL for Creating HTML5 Mobile Applications

 本文由用戶 webphp 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!