1. 程式人生 > >Appcan、apicloud、HBuilder 不同之處解析

Appcan、apicloud、HBuilder 不同之處解析

硬件加速 時間 js框架 一個 免費 打開 htm c++ sign

來源:http://www.mamicode.com/info-detail-1129829.html

現在Hybrid app是一中非常火熱的開發模式,在國內對應的開發工具也亂象叢生,有WeX5、crossApp、ExMobi、Appcan、apicloud、HBuilder等。

  其中WeX5只是在PhoneGap外面套了一層殼子,內部的UI都是通過大量的css,js實現的,頁面切換也大量采用webapp模式,類似於JQuery Mobile中的框架,太過偏向於webapp,性能得不到較好的體驗,而且缺少第三方功能SDK封裝支持。

  crossapp是一款實用C++開發跨平臺應用的工具,因為Android與IOS應用程序本身就是能夠用C++來開發的,所以這也算是一種類原生方式開發,但是C++開發Android應用程序或者開發IOS應用程序很少見,會的人不多,缺少交流平臺,自己開發插件比較困難,只能完全依賴官方提供,官方的第三方插件庫資源不足,很難滿足開發者變態的需求。

  ExMobi是烽火科技研發的一種內部使用的開發平臺,當然也可以購買使用權,雖然也有免費版,但是在免費版連推送功能都不開放的情況下你還會選擇嗎?大量的功能需要購買不同的版本才會提供,對於小型開發團隊來說不切實際。

  Appcan是國內最早一批研發Hybrid app開發模式中的一員,其存在時間之久,屬目前國內Hybrid app開發平臺之最,為什麽它能夠一直堅持下去?那肯定是有其優點所在。Appcan基於多webview來開發單Activity模式app,最近去除了ActivityGroup,采用Fragment來代替,優化了性能及體驗,同時其合作商家廣泛,第三方SDK應有盡有,能夠很好地滿足開發者的變態需求。

  apicloud的一種從Appcan脫離出來的技術,雖說其開發人員有很多是Appcan原來的技術人員,但是這是兩種不同的設計方式,它也有大量的第三方SDK支持,並且其UI是令人看著比較舒服的(個人覺得)。

  HBuilder的webview處理方式與apicloud基本類似,其實這種用webview裝載網頁的技術都大同小異,網上也能找到,只是在於細節點處理方面不同而已。

  Appcan&apicloud&HBuiler

  • 最初使用Appcan的時候感覺其打開新窗口響應較慢,而且其內部UI完全是黑色的,比較難看,當初找相關技術人員,想讓其提供能夠選擇UI主題的接口,但是最後不了了之,在apicloud出來之後,發現其UI效果很好,因此又去研究了一下,發現其窗口響應速度比Appcan要高
  • 現在Appcan引擎已全部開源,開發者能夠完全自己Design,主題這些都不是問題,而且我再次測試了窗口響應速度,現在有了明顯提高,與apicloud不想上下
  • HBuilder的webview最初一直不看好,因為沒有采用硬件加速渲染,渲染比較慢,會出現空白,而他們官方提供的一種方式是預加載,當初我問他們技術,預加載不會過多消耗資源嗎?他們技術脫口而出,只要不顯示就不消耗資源,不用擔心。而且好像還發表了一篇這樣的文章介紹預加載的,我就在想,難道我這些年開發一直白學了,哪個程序創建個變量會不消耗資源?預加載你總要創建webview實例吧?這是忽悠誰呢?如果真的不消耗資源為什麽你們右面又提供一種模板頁構建的方式呢,所有二級頁面只需預加載兩個嵌套webview就可以。
  • 對於前段UI,Appcan有一套很全面的css與js框架,其完全采用自適應模式。。什麽?不知道自適應?好吧一會介紹其區別。HBuilder也有一套UI,js和css比較全,apicloud沒有專門的UI,需要用戶自己DIY,對於個人來說,我反而傾向於apicloud,因為他們提供的UI中js與css太多而雜,Appcan中js引入了Zepto,Backbone、Underscore庫,顯得異常臃腫,導致網頁加載js效率受影響;HBuilder中所有css與js都在一個文件中,大量不需要用到的樣式無法刪除,就算你這個頁面只需要用到一個按鈕樣式,那麽都需要引入整個css與js
  • 關於自適應,有很多人說,我前端就是自適應的啊,其實那並不能嚴格說是自適應,你們的布局只能說是根據設備大小進行自適應,而不是分辨率,apicloud和HBuilder的webview會根據設備的分辨率來進行放大或縮小(一般是放大),並不是網頁原來的形態,這也就是為什麽明明定義的1px的border在Android上看上去是2px或者1.5px的原因。而Appcan中1px就是1dp,其設備大小被修改成與分辨率相等,這就使得網頁在webview中保留了原形態,沒有放大縮小,其視覺體驗非常好,圖片等不會失真。其本質原因是Appcan是基於Android 4.4.2的API,也就是API19來開發的,其設置了viewport的支持,在viewport中設置target-densitydpi=device-dpi就可以實現高清晰效果,而apicloud是基於API20以上開發的,Android在4.4以後就不支持viewport屬性了,因此在apicloud中設置viewport屬性與否沒有任何影響,在這點上HBuilder與Appcan類似,能夠通過viewport屬性來修改像素點,從而得到較好的視覺體驗,當然也可以設置成與apicloud一樣的情況,這種就具有較好的選擇性,但是這種布局就要求有較強的能力了,Appcan中為不同分辨率定義了不同的字體大小,也就是em值對應的像素,在其中布局最好使用em來實現,不要使用px。而在apicloud中使用px能夠在不同的手機上達到一樣的效果,這就是不同分辨率的適配

Appcan、apicloud、HBuilder 不同之處解析