愛碼哥移動開發平臺|讓製作app更加便捷

本文來自愛碼哥CTO邱楊(Terry)同學

  隨HTML5Node.js的流行,Javascript這門在互聯網初期就已誕生的語言正迸發出勃勃生機,Javascript將前端和後端開發統一起來,“一切皆爲JS”看起來只是時間的問題。唯一的障礙是在移動端,因爲無論是Android還是iOS平臺,當前仍是原生應用大行其道。HTML5曾經被寄予厚望過,但是以Facebook爲代表的一批公司在移動端對HTML5技術進行實踐的心酸血淚史表明,HTML5可以是原生應用開發的一種有效補充,但遠不足以替代原生。但是現在,隨着iMAG.js的漸漸流行,這種狀況正在發生改變。

揭開iMAG.js這匹黑馬的神祕面紗

iMAG.js是國內的愛碼哥移動平臺推出的Javscript移動跨平臺開發框架,它的特點簡單高效,同時又功能強大,可以用Javascript來替代原生開發。iMAG.js的原理和在服務器端運行的Node.js有些相似,都是封裝了Javascript引擎,用Javascript去調用底層的API接口。不同的是因爲移動應用的控件主要是UI模塊、用戶交互界面開發,iMAG.js爲此引入了XML模板技術,XMLJavascript結合,這樣很適合手機界面的展示。


〈下面我們來看iMAG.js是怎麼做到替代原生開發,完成HTML5無法完成的事情的。〉                                                            DISCOVERY

1

首先是封裝原生UI控件。大家知道手機系統無論是Android還是iOS都有其自身的特色,而這些特色給用戶最直觀的感受就是用戶體驗,雖然AndroidiOSApp可以在外觀上設計得相似,但用戶操作兩下之後就能很輕易地區分出哪個是Android哪個是iOS因此發揮系統本身最大功效最根本的做法就是儘可能使用原生UI控件,而iMAG.js框架中所有提供給用戶的控件都是原生的,只不過是在上層封裝了Javascript接口而已。比如說iMAG.js中的Label控件,在iOS上是調用系統的UILabel控件,而在Android上則是調用的TextView控件,這樣在性能和用戶體驗上就能做到和原生應用完全一致。手機的CPU和內存等資源有限,原生控件在一些細節地方都是有針對性的優化的,比如Android ListView的複用機制,使用ViewHolder來重複使用View,以節省內存使用並且保持滾動的流暢性。同樣地,iMAG.js很充分地利用了這些機制,以保證基於iMAG.js開發的App能夠和原生App同樣操作流暢。

2

其次是統一的開發框架。不同於 HTML5上開發框架紛亂的狀況,基於iMAG.js爲移動開發量身定做的API,你會始終感到很順暢,iMAG.js的開發者最直觀的感受就是這個框架就是爲移動開發準備的。在學習掌握了一個iMAG.js控件之後,即便不看文檔,開發者也能大致猜到其他控件怎麼用,這得益於iMAG.js良好的設計和封裝。iMAG.js框架支持XML模板技術,這樣所有的UI控件都可以用XML的方式來書寫,開發得到了相當程度的簡化。就像搭積木似的,即便是不懂技術的人,也能利用iMAG.js快速搭建出自己想要的App原型,將自己的想法直觀地呈現給客戶。除了靜態界面的展示,與用戶交互也是重點。比如說跟後臺數據庫相結合,界面數據都是來自數據庫的動態數據,用戶輸入的數據能夠以同步和異步的方式入庫。而所有這些動態的東西,在iMAG.js中都可以通過Javscript腳本來完成,Javascript本身就是一門具有高度擴展性的動態腳本語言。

3

 iMAG.js同樣適合開發大型的App項目。一個大的開發團隊,除了有開發人員,還有專業的產品經理,專業的美工,專業的測試,成員之間彼此分工協作來完成項目。在精密的分工協作下完成的App通常是一個UI界面很精確的東西,比如美工根據設計做的圖,通常是精確到像素的,文字的字號多大,文字圖片之間的間距多少都是嚴格定義的,不能只是一個大致差不多的東西。iMAG.js通過css樣式來控制這些內容,實現UI元素的精確佈局,而且充分考慮到了手機屏幕大小的不規則性,能對不同平臺不同屏幕大小的手機進行自動適配,讓跨平臺開發變得更容易。在兼容性方面,由於iMAG.js框架自身對AndroidiOS平臺良好的兼容性,真正做到了一次開發多處運行,避免了類似於HTML5開發上出現的由於內核的不同在不同手機上展示不一致的情況。再就是iMAG.js提供了離線應用和在線應用兩種模式,習慣了web後臺開發的開發者可以很輕鬆地切換到在線應用這種模式下,因爲這根本就和開發網頁一樣。

4

        功能也是用戶關心的,到底能有多少種UI展示效果,有多少種手機能力可用,決定了APP開發能夠達到的層次。iMAG.js框架本身已經封裝了上百種原生控件,比如TextView, ListView, UIScrollView, UITableView這些,支持電話、短信、定位、藍牙、通訊錄等幾十種手機能力的使用,而這些本地功能調用都相當容易,比如:$phone.call(‘10086’)表示撥打這個電話。當然iMAG.js本身提供的功能再豐富也有不夠用的時候,因爲移動開發常常會面對一些複雜的場景,比如多人視頻會議,不僅複雜可能還需要跟底層特定硬件結合。幸好iMAG.js是一個跟Node.js類似的東西,Node.js作爲後起之秀能夠迅速走紅很大程度上得益於良好的擴展性,iMAG.js也是一樣,iMAG.js支持原生插件,所有“不夠”的能力,都可以通過原生插件的方式來實現。如果你想實現一個視頻會議的插件,那麼可以通過$phone.plugin(‘MyVideoMeeting’)來調用你自己用原生代碼實現的視頻會議模塊,這裏MyVideoMeeting是一個在愛碼哥平臺發佈的插件代碼。當然你其實並不需要自己專門去開發一個視頻會議的模塊,因爲這種功能模塊往往是現成的,你只需要向第三方購買相應的SDK即可。

5

       前面介紹了iMAG.js看起來比較“酷”的地方,但你可能還有疑慮:既然這麼高大上那我用iMAG.js開發一個微信怎麼樣?iMAG.js努力的方向是能夠完全替代原生App的開發,即便是使用原生來開發也是以插件的形式集成進來,這樣模塊都是可以複用的,因此用iMAG.js來開發微信類的應用是完全可行的,並且官方已經有這樣的案例。因此iMAG.js提供了一種方式,能夠將Javascript語言引入到移動端,並且通過插件化模塊化的方式將移動領域各種原本分散的解決方案打包成一個整體呈現給開發者和企業,讓企業能夠通過愛碼哥平臺快速實現移動化。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章