深度分析HTML5在移動開發方面的發展狀況

来源:http://www.cnblogs.com/shouce/archive/2016/04/01/5343606.html
-Advertisement-
Play Games

“我們正在用HTML5編寫我們下一套移動產品。”“是啊,這些天很多人在玩著Appcelerator,我也在玩著。”“嗯,但這並不是我要說的那種HTML5產品。” 最近,我有很多類似的交流對話,可能因為我正在開發一套HTML5的應用吧。就像2005年的“AJAX”,“HTML5”這個術語現在還沒有被清 ...


“我們正在用HTML5編寫我們下一套移動產品。”“是啊,這些天很多人在玩著Appcelerator,我也在玩著。”“嗯,但這並不是我要說的那種HTML5產品。”

最近,我有很多類似的交流對話,可能因為我正在開發一套HTML5的應用吧。就像2005年的“AJAX”,“HTML5”這個術語現在還沒有被清晰地定義,在未確定這個新技術有什麼優勢前,它就已經被四處套用,甚至投入運營。

如果你在一間被熱衷新技術的管理人掌控的公司里任職,如果你走運,那麼漫畫人物呆伯特先生可能非常願意坐在你隔壁的小房間。

兩種看法

當人們討論移動設備上的HTML5技術時,他們通常只會有兩種不同的看法。

從感性的角度來看,HTML5技術的渲染過程主要是由瀏覽器、內嵌HTML5解析器的應用程式 (如PhoneGap)、支持書簽打開方式的應用程式又或者是移動手機產品(iPhone和iPad)進行的。這種技術的好處就是能重用現有的網頁設 計,Web開發人員也更容易上手,同時產品具備更高質量,更適用於多平臺產品。也更易於調試和修正錯誤,並且,版本更新會更快。此消彼長,優勢是它的功 能,如果你像PhoneGap一樣使用內嵌的架構,那麼你會少很多麻煩事,劣勢就是它的表現,這也是HTML5技術面臨的最大難題。

從理性的角度來看,HTML5技術就是使用JavaScript引擎直接控制本地功能,改變移動設備上的瀏覽器組件。而HTML5應用上的表現問題 更多是由HTML/CSS渲染技術控制的,而不是由JavaScript解析生成的。如果使用正確,HTML5技術無疑可以給予你大量新增的表現效果。目 前使用HTML5技術的例子包括Appcelerator Titanium、Mobage/ngcore、Game Closure以及PhobosLabs。

Node.js工具包

以PhobosLabs的項目為例,當這個項目是使用WebKit的JavaScriptCore組件完成,在設備端使用OpenGL渲染界面,而 在開發時使用HTML5的canvas組件的API開發。這就是說,開發人員可以在一個對canvas有良好支持的桌面瀏覽器內開發和測試他的HTML5 游戲,並且當他將這個游戲放到移動設備的瀏覽器打開時,也會出現同樣優秀(甚至更優秀)的表現效果。這種用HTML5開發的效果跟使用Node.js工具 包開發的效果很相像,使用Node.js時,只需啟用JavaScript引擎,而你僅需把你需要使用的Node.js組件添加到你的應用即可。

Appcelerator的Titanium詳述了HTML5技術的概念,給我們展現了一個完整的UI工具的抽象層,這使得它可以被應用到生成其他 游戲產品。意即一個HTML5應用開發人員可以通過Appcelerator的JavaScript UI庫創建按鈕,而Appcelerator的內部邏輯會將這個按鈕轉換為iOS的原生界面按鈕。我們可以通過JavaScript控制界面上的原生按 鈕。理論上,開發人員可以不需要寫一句Objective-C代碼。

HTML5技術有它的優勢,當你依然在使用JavaScript編寫代碼時,你可以跟那些煩人的HTML/CSS佈局邏輯和樣式聲明說再見。你還可 以跟那些優秀的調試工具說再見。但這個技術也有蹩腳的一面,像HTML5的游戲API Mobage就存在一些小毛病,canvas組件可以在屏幕相對小一點的界面順利顯示,但如果屏幕稍微變大一點,就好像Appcelerator的例子一 樣,在調試時,你還需要考慮界面層額外的複雜性。在這裡有很多Appcelerator的負面評論,如果你能把上面的幾點記在心裡,那麼那些負面評論其實 都可以被理解。

問題還在瀏覽器

開發一個完整的HTML5手機應用的首要難題就是運行速度過慢。而第二大難題就是非常愚蠢的工具束縛,許多組件或多或少在不同瀏覽器都存在一些漏 洞,如jQuery Mobile的導航組件、iOS的innerHTML組件的漏洞,所以你需要減少功能去避免出現漏洞,又或者你願意花一些時間去修複這些漏洞。

你可以自己做個實驗,當你在一個iOS應用里僅使用一至兩個界面庫時,再加上你自己寫的少量JavaScript代碼,沒有更多的 JavaScript庫,你會發現這個HTML5應用運行得流暢而完整,但卻沒什麼功能。PhoneGap的iOS項目僅需要1至2秒的時間就可以在 iPhone 3GS上發佈運行。這個事實可以告訴你,最基本的HTML5應用運行起來真的非常流暢。所以,當你發現你的HTML5應用的某些操作花費了10-15秒時 間時,又或者花了15秒時間才載入完整個程式時,這都是一些JavaScript界面庫給拖累的。

兩套有代表性的UI庫

一個HTML5手機應用程式員需要的通常只有那麼兩樣東西:第一樣就是原生平臺和網頁界面的嫁接層;第二樣就是手機UI庫。

PhoneGap近年已逐漸成為預設的嫁接層選擇,它允許HTML5應用通過JavaScript調用移動設備的照相機、訪問手機通訊錄和讀寫文件。而最受歡迎的手機UI庫就包括由jQuery Mobile和Sencha Touch。

jQuery Mobile是去年才創建的一個項目,所以它是非常新的,很顯然,它也不夠成熟。jQuery Mobile的導航欄組件就非常糟糕,翻頁時明顯比原生的翻頁功能要慢,如果你不刷新瀏覽器,你就沒有辦法遞增列表內容。而在PC桌面平臺測試時,它的 CPU耗用率也是非常高(版本是jQuery Mobile的alpha 4)。我的項目使用它,主要是考慮到相對簡單(比較容易破解),因為這個庫是基於jQuery構建的,所以任何一個資深的網頁程式員都很容易上手。

據說Sencha Touch比jQuery Mobile更成熟更快。但我一看到高複雜性的東西,我就不會不自覺地厭惡它們。因為潛意識會告訴我,有很多功能我根本不會使用到,但卻強制載入這些額外 的東西到我應用里,讓我應用整體表現差了很多。儘管我可能是錯的,PhoneGap應用頁中最強大的手機應用是IGN Dominate,它運行得很流暢並且它就是基於Sencha Touch開發的,但我確定他們肯定花了很多時間去優化這個產品。

調試和修改

在上面談到的開發HTML5應用時,許多人可能都忽略了一點,其實調試或修改一個HTML5應用是很簡單的。任何一個曾參與過大型HTML5開發項 目的開發人員都可以告訴你,調試和維護幾乎占了整個項目生命周期的80%的時間,甚至更多。這就是說,當你聽到一個開發工具宣稱可以在15分鐘內開發一個 聊天應用時,那麼它可能只是能讓你在15分鐘內解決20%的工作,剩下的80%,你可能得耗上3倍以上的精力才能完成。

HTML5手機應用在調試時存在觸碰問題,因為無法列印出控制台的日誌。所以,如果JavaScript代碼存在漏洞或者報錯,你需要 alert()報錯,否則你可能沒法發現。PhoneGap修正了這個問題,它可以通過XCode的控制台列印控制台的調式日誌,但功能依然很有限。

目前最有效的解決方案就是weinre。儘管漏洞百出,但它就是能跑起來,有了它,你還能斷點調試你的手機應用的UI,weinre是基於 WebKit的網頁檢查器的,它的調式工具後臺通過遠程服務端獲取和替換調試代碼。兩至三周前,我曾對網頁檢查器的代碼做過一些研究,我發現把它轉換為一 個遠程調試器真的不難。Weinre接下來幾個月的開發進度將會更快,某些人可能還會開發出它的替代產品。我們拭目以待。

未來幾年,移動應用開發中的HTML5技術的調試工具無疑變得更加重要,它可以解決大部分開發人員80%的工作量。你想要用Objective-C 改變你的界面設計嗎?編輯,再編譯,運行。重覆這三個步驟直到你滿意為止。如果再編譯步驟很多,這可能會耗上一天的時間。用HTML5技術去實現?用 weinre編輯一些CSS屬性並測試,你甚至不用關閉應用,你就可以繼續調試。一定程度上,你還可以在桌面瀏覽器調試你的HTML5手機應用。但相信 我,你的應用產品最終可能只會在移動設備上爆發一大堆漏洞而已,所以你必須得使用weinre。

不幸的是,人們常贊美某個工具包或者某項功能,但你卻很少聽到有人誇贊某個調試工具非常棒。所以我猜測就算它是HTML5手機程式員最常用到的工具,我們也很少聽到它被討論到。

總結:現在的狀況

儘管這篇文章真的有點長,但我還是得總結一下:

  1. 在移動設備開發HTML5應用只有兩種方法,要不就是全使用HTML5的語法,要不就是僅使用JavaScript引擎。
  2. JavaScript引擎的構建方法讓製作手機網頁游戲成為可能。由於界面層很複雜,我已預訂了一個UI工具包去使用。
  3. 純HTML5手機應用運行緩慢並錯漏百出,但優化後的效果會好轉。儘管不是很多人願意去做這樣的優化,但依然可以去嘗試。
  4. HTML5手機應用的最大優勢就是可以在網頁上直接調試和修改。原生應用的開發人員可能需要花費非常大的力氣才能達到HTML5的效果,不斷地重覆編碼、調試和運行,這是他們首先得解決的一個問題。
  5. 是的,HTML5的移植非常簡單,但我假設每個人都會讓這變成一個自動化操作。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 問題的提出整個WR的ISE工程比較大,編譯時間很長,導致開發效率低。通過分析發現,ISE在綜合的時候大量的時間都花在了初始化DPRAM上。調研發現Xilinx提供了BMM文件和DATA2MEM工具,可以將軟核CPU的運行代碼在HDL綜合完後再與bit文件合併,這樣可以節約大量的編譯時間。但是在wr工 ...
  • Atitit.android jsbridge v1新特性 1. Java代碼調用js並傳參其實是通過WebView的loadUrl方法去調用的、只是參數url的寫法不一樣而已1 2. 三、JAVA和JS交互註意事項1 3. Js調用android java通過jsbridge2 4. JsBrid ...
  • 介紹 智能企業(intelligent enterprise)就是全面運用智能管理體系,實現企業管理中“機要素智能化高效整合併實現人機協調”的企業。信息管理中經常談到“人機協調”的問題.這裡所說的“人機協調含義有所不同。信息管理中的人機協調更多的是研究技術上的問題,這裡的人機協調強調的是管理問題,必... ...
  • 序言 這個AOP要從我們公司的一個事故說起,前段時間公司的系統突然在烏雲中出現,數據被泄露的一覽無餘,烏雲上顯示是SQL註入攻擊。呵,多麼貼近生活的一個露洞,可謂是人盡皆知啊。然而卻華麗麗的給拉我們一記耳光。 那麼問題既然來啦,我們.net組有40-50個項目之多吧,怎麼去一一補救這一過失呢?什麼又 ...
  • 需求:根據年級下拉框的變化使得科目下拉框綁定次年級下對應有的值 我們用三層架構的模式來實現 1.我們想和資料庫交互,我們首先得來先解決DAL資料庫交互層 01.獲得年級下拉框的數據 在GradeDAL類中 02.在業務邏輯層 03.在窗體UI層 在Load事件中載入年級下拉框 其中在使用 獲得年級下 ...
  • 本地文件系統如ext3,reiserfs等 (這裡不討論基於記憶體的文件系統),它們管理本地的磁碟存儲資源、提供文件到存儲位置的映射,並抽象出一套文件訪問介面供用戶使用。但隨著互聯網企業的高 速發展,這些企業對數據存儲的要求越來越高,而且模式各異,如淘寶主站的大量商品圖片,其特點是文件較小,但數量巨大 ...
  • HTML5已經成為最流行的編程語言在web開發者。強大的編程語言有很大的能力,生產更好的萬維網內容。HTML5的興起已經在過去三年增長迅速。介紹了HTML5的新技術是更好的。HTML5技術是由像Chrome的瀏覽器,支持Firefox、IE和更多。今天,我們列出了十個HTML5動畫製作工具,可以幫助 ...
  • 最近的工作在做一個多步驟多分步的表單頁面,這個多步驟多分步的意思是說這個頁面的業務是分多個步驟完成的,每個步驟可能又分多個小步驟來處理,大步驟之間,以及小步驟之間都是一種順序發生的業務關係。起初以為這種功能很好做,就跟tab頁的實現原理差不多,真做下來才發現,這裡面的相關邏輯還是挺多的(有可能是我沒... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...