昨天一時無聊研究起最近很紅的 CoffeeScript,小試結果不禁有種相見很晚的 fu....Jeremy Ashkenas 你實在是太棒啦!!!!!
先前使用 Javascript 來寫 Titanium APP 的時候最大的問題還是來自於 Javascript 是個易學難精的語言,debug 不易,怎麼寫好像都沒問題但是跑出來的結果就是很神奇, Class 的實作也是百百種....雖然先前 文章分享的:PureMVC for Titanium Mobile 簡單實作了 PureMVC 供 Titanium 使用,不過實際操作時還是會覺得有點彆扭。
CoffeeScript 講求的就是採用 Javascript the Good parts,在不影響效能的轉換下,保證轉出來的 js 都是優良的,更重要的是它的類別實作....各位朋友們啊!這個才叫類別啊!!!(淚奔)
秉持著哪裡都要用 PureMVC, 即使改用 CoffeeScript 也不例外
以下原始碼皆可以在本人的 github 找到。
在這邊貼一段 Titanium APP with PureMVC & CoffeeScript 的實作:
為了怕 混亂 Global scope, Puremvc 還是包覆在 Puremvc 的 namespace 下
#引入 puremvc
Ti.include "puremvc-coffee-1.0.js"
trace = (s)->
Ti.API.info s
trace "Hello coffeescript with puremvc."
#利用工廠方法建立 MainWindow 方法
MainWindow = ->
win = Ti.UI.createWindow
title: 'Tab 1'
backgroundColor: '#fff'
label = Ti.UI.createLabel
color: '#999'
text: 'Hello Coffeescript & Puremvc'
font:
fontSize: '20dp'
fontFamily: 'Helvetica Neue'
textAlign: 'center'
width: 'auto'
win.add label;
win
# MainWindow 用的 Mediator
class MainMediator extends Puremvc.Mediator
listNotificationInterests: -> ["Hello"]
handleNotification:(note)->
trace 'MainMediator got "Hello": ' + note
onRegister:->
trace 'Mediator onRegister.:' + @getMediatorName()
# get view component
@getViewComponent().open()
#主要由 StartupCommand 註冊 MainMediator
class StartupCommand extends Puremvc.SimpleCommand
execute:(note)->
trace 'startupCommand executed!!!'
@facade.registerMediator new MainMediator 'MainMediator', new MainWindow()
# to MainMediator
@sendNotification "Hello"
最後:
setTimeout( ->
Puremvc.facade.registerCommand 'startup', StartupCommand
Puremvc.facade.registerProxy new DemoProxy 'DemoProxy'
Puremvc.facade.sendNotification 'startup'
200)
Edit:
為了怕大家不清楚如何在 Titanium Studio 中使用 CoffeeScript ,在這邊提供一個中文說明:請參考高見龍的 在Titanium Studio使用CoffeeScript來寫app
Edit2:
關於如何在 Titanium 中使用 CoffeeScript 也可以直接安裝好 CoffeeScript 後,直接利用 Titanium 下拉是功能表 / Commands / CoffeeScript Bundle 執行 Compile and Display JS,不需要真的安裝 Titanium plug-in
Comments
Post a Comment