移動(dòng)Web在終端設(shè)備上應(yīng)用程序標(biāo)準(zhǔn)
現(xiàn)狀和改變
這篇文章是移動(dòng)Web應(yīng)用程序報(bào)告的第二版。之前的版本分別在2011年2月和2011年5月發(fā)布,所有這些版本的發(fā)布都需要感謝W3C Wiki的支持。歡迎大家將對(duì)這篇文章的想法告訴作者(dom@w3.org),或許這些想法將會(huì)出現(xiàn)在下一版的報(bào)告中。這篇文章記錄了從上一個(gè)版本到現(xiàn)在為止,Web平臺(tái)上發(fā)生的所有重大變化:
- 新增了一個(gè)設(shè)備適配領(lǐng)域
- 新增了一個(gè)W3C Community Groups開展W3C標(biāo)準(zhǔn)制定工作
- Web Performance Working Group推出了四個(gè)新的API: Performance Timeline, User Timing, Efficient Script Yielding和Timing control for script-based animations
- 完成了Web Real-Time Communication的初稿
- 一批標(biāo)準(zhǔn)已經(jīng)引起了更多的重視(WOFF, Contacts API,DeviceOrientation Event, Network Information API,Widgets specifications系列文章)
- 提出了基于模型的用戶界面的一些建議
- 更新了Device APIs Working Group charter
文章結(jié)構(gòu)
下面將逐一介紹Web平臺(tái)上新增的技術(shù)功能:
- 圖像處理
- 多媒體
- 設(shè)備適配
- Forms
- 用戶交互
- 數(shù)據(jù)存儲(chǔ)
- 個(gè)人信息管理
- 傳感器和硬件集成
- 網(wǎng)絡(luò)
- 通訊
- 封裝
- 性能和優(yōu)化
每一節(jié)里面都有一個(gè)表對(duì)各個(gè)功能進(jìn)行了總結(jié),其中包括:
- W3C對(duì)該功能的規(guī)范定義,
- W3C中負(fù)責(zé)相應(yīng)規(guī)范的團(tuán)隊(duì),
- 規(guī)范的成熟度,
- 規(guī)范文檔的穩(wěn)定性評(píng)估,由本報(bào)告的作者對(duì)規(guī)范文檔需要改動(dòng)的幅度進(jìn)行評(píng)估,分為三個(gè)等級(jí):低(規(guī)范文檔基本已經(jīng)穩(wěn)定)、中(部分穩(wěn)定,而其他部分需要大幅度修改)、高(整個(gè)文檔需要大幅度調(diào)整),
- 在移動(dòng)設(shè)備上實(shí)施后的可用性評(píng)估,這個(gè)評(píng)估只是粗略的定性描述,
- ***規(guī)范文檔的鏈接
- 相應(yīng)功能測(cè)試集的鏈接
需要指出的是,W3C在制定Web標(biāo)準(zhǔn)的過程中,需要按照 Recommendation track經(jīng)歷以下幾個(gè)階段:
- “Editors drafts”表示該定義僅僅代表作者的個(gè)人觀點(diǎn),并不是標(biāo)準(zhǔn)的定義。
- “Working Drafts”是工作組取得的初步進(jìn)展。
- “Last Call Working Drafts”表明工作組認(rèn)為規(guī)范已經(jīng)滿足要求并且所有已經(jīng)發(fā)現(xiàn)的問題都已得到解決,需要獲取更加廣泛的反饋。
- “Candidate Recommendations”會(huì)邀請(qǐng)開發(fā)人員實(shí)現(xiàn)規(guī)范中的內(nèi)容并且給出反饋意見;工作組會(huì)在按照規(guī)范開發(fā)的應(yīng)用上運(yùn)行測(cè)試集。
- “Proposed Recommendations”表明規(guī)范已經(jīng)得到了充分的實(shí)踐檢驗(yàn),只差W3C的最終審核。
- “W3C Recommendations”表明規(guī)范已經(jīng)是一個(gè)穩(wěn)定并且完整的Web標(biāo)準(zhǔn)了;相關(guān)的文檔很少會(huì)再被更新了,它通過了“Edited Recommendation”過程,是工作組經(jīng)過反復(fù)修正的成果。
工作組只有通過W3C Members的討論或是被W3C Member Submission接受后方能開始制定標(biāo)準(zhǔn)。
W3C最近新成立了一個(gè)Community Groups,該機(jī)構(gòu)幫助人們?cè)赪3C的基礎(chǔ)設(shè)施上做各種實(shí)驗(yàn),并在知識(shí)產(chǎn)權(quán)允許的范圍內(nèi)將他們所做的工作轉(zhuǎn)化為W3C標(biāo)準(zhǔn)。
圖像處理
SVG(Scalable Vector Graphics) ,可縮放矢量圖,是基于XML用于描述二維矢量圖形的一種圖形格式。由于圖像是由一組幾何圖形構(gòu)成的,這些圖形能夠按照用戶的需求任意縮放,因此它非常適合移動(dòng)設(shè)備上的開發(fā)。用它開發(fā)動(dòng)畫也是相當(dāng)方便的,因此可以用來優(yōu)化用戶界面。
SVG為HTML5帶來了更加豐富的功能,例如可以為多媒體文件增加高級(jí)圖像過濾器(使用SVG的過濾器)。
HTML5提供的標(biāo)簽是對(duì)SVG申明的補(bǔ)充,該標(biāo)簽提供了一個(gè)2D編程API,能夠減少圖像處理時(shí)的內(nèi)存開銷。這個(gè)API不僅可以實(shí)現(xiàn)圖像渲染,還能用于圖像的處理和分析。
SVG和HTML都能夠使用CSS (Cascading Style Sheets)設(shè)計(jì)圖形樣式;值得一提的是,CSS3(CSS第三版)提供了一組標(biāo)準(zhǔn)樣式集,里面有許多新的功能,使得用戶能夠方便地打造圖像效果,如圓角、復(fù)雜的背景圖像、陰影(CSS Backgrounds and Borders)、旋轉(zhuǎn)(CSS 2D Transforms)、動(dòng)畫(CSS AnimationsCSS Transitions)、甚至是3D效果(CSS 3D Transforms)。
動(dòng)畫通常是非常消耗資源的——基于腳本的動(dòng)畫API提供了時(shí)間控制器,能夠控制動(dòng)畫更新的頻率,從而限制動(dòng)畫對(duì)資源的占用。
在構(gòu)造圖形界面時(shí),字體的選擇也是非常重要的,但通常移動(dòng)設(shè)備上可供選擇的字體是非常有限的。WOFF (Web Open Font Forma)的出現(xiàn)解決了這一問題:它允許用戶從樣式庫中自動(dòng)下載各種字體,并且能夠根據(jù)實(shí)際的需要調(diào)整字體的大小。
注:WebGL——3D圖形API的定義工作是由Khronos Group完成的(并不是W3C);這個(gè)API與OpenGL ES是兼容的,主要用于移動(dòng)設(shè)備的開發(fā)。
Feature | Specification | Working Group | Maturity | Stability | Latest editors draft | Current implementations | Test suite |
2D Vector Graphics | SVG Tiny 1.2 | SVG Working Group | Standard | Finished | New version of SVG (SVG 2.0) in preparation | Widely deployed (iOS, BlackBerry, WebKit on Nokia, webOS, Opera, Firefox, announced for Android, announced for Windows Phone) | High coverage |
2D Programmatic API | HTML Canvas 2D Context | HTML Working Group | Last Call Working Draft | Mostly stable | Updated regularly | Widely deployed (iOS, BlackBerry, Android, webOS, Opera, Firefox, announced for Windows Phone) | Good coverage |
Rounded Corners | CSS Backgrounds and Borders | CSS Working Group | Candidate Recommendation | Mostly finished | Updated regularly | Deployed as an extension in many mobile browsers | None |
Complex background images | Limited (?) | ||||||
Box shadow effects | Limited (?) | ||||||
CSS 2D Transforms | CSS 2D Transforms Module Level 3 | Working Draft | Stabilizing | Last update May 2010 | Limited (?) | None | |
3D Effects | CSS 3D Transforms Module Level 3 | Working Draft | First draft | Last update Dec 2010 | Very limited | None | |
Animations | CSS Animations Module Level 3 | Working Draft | First draft | Updated regularly | Limited (?) | None | |
CSS Transitions Module Level 3 | Working Draft | Early draft | Last update Aug 2010 | Limited (?) | None | ||
Timing control for script-based animations API | Web Performance Working Group | Working Draft | Early | Regularly updated | None | None | |
Downloadable fonts | WOFF File Format 1.0 | WebFonts Working Group | Candidate Recommendation | Mostly stable | Last update Aug 2011 | Good deployment | Good coverage |
多媒體
HTML5通過添加<video>和<audio> 這兩個(gè)標(biāo)簽顯著提升多媒體內(nèi)容在Web上的集成度。這兩個(gè)標(biāo)簽幫助Web開發(fā)者擺脫對(duì)插件的依賴,可以更加方便地在Web中使用音頻和視頻內(nèi)容了。從此可以像處理圖像一樣方便地處理多媒體內(nèi)容了。
這兩個(gè)標(biāo)簽允許播放多媒體內(nèi)容,而HTML Media Capture和Media Capture API 定義了使用攝像機(jī)和麥克風(fēng)記錄多媒體內(nèi)容的方法,這是移動(dòng)設(shè)備上普遍具備的功能。Web Real-Time Communications Working Group也將開發(fā)可以直接處理攝像機(jī)和麥克風(fēng)上的數(shù)據(jù)流的API。
此外,Web平臺(tái)上還新增了兩個(gè)API用來處理多媒體內(nèi)容。一個(gè)是我們之前已經(jīng)提到過的Canvas 2D ContextAPI:可以使用它來修改圖像,甚至有可能用它來編輯視頻。W3C Incubator Group同樣也在開發(fā)一個(gè)音頻API(Mozilla’s proposal draft),詣在修改音頻內(nèi)容,其中包括對(duì)聲音的分析和合成——這些工作為Audio Working Group今后的開發(fā)打下了良好的基礎(chǔ)。
***,Device APIs Working Group的新規(guī)范中包含了一個(gè)API,該API用于讀取設(shè)備當(dāng)前音頻的音量,并通過與用戶的交互調(diào)整設(shè)備音量。
所有的這些功能表明Web正向著綜合的多媒體平臺(tái)發(fā)展。將Web和TV領(lǐng)域結(jié)合起來是目前的發(fā)展趨勢(shì)(這一點(diǎn)已經(jīng)得到了W3C Web and TV Interest Group的證實(shí))。越來越多的用戶開始使用移動(dòng)設(shè)備收看電視節(jié)目,移動(dòng)設(shè)備將成為第二大電視媒體,用戶能夠通過他們的移動(dòng)設(shè)備找到更多的電視節(jié)目甚至在觀看節(jié)目的同時(shí)還能與節(jié)目進(jìn)行互動(dòng)。
HTML5 videoelement
HTML Working Group | Last Call Working Draft | Stabilizing | Updated regularly | Good deployment | Just started | ||
Audio playback | HTML5 audioelement | Barely started | |||||
Capturing audio/video | HTML Media Capture | Device APIs Working Group | Working Draft | Early draft | Last update Apr 2011 | Very limited | None |
The Media Capture API | Working Draft | Early Draft | Last update Dec 2010 | None (?) | None | ||
WebRTC 1.0: Real-time Communication Between Browsers | Web Real-Time Communications Working Group | N/A | None | Last updated August 23 | A few experimental ones | None | |
Image & Video analysis, modification | HTML Canvas 2D Context | HTML Working Group | Last Call Working Draft | Mostly stable | Updated regularly | Widely deployed (iOS, BlackBerry, Android, webOS, Opera, Firefox, announced for Windows Phone) | Good coverage |
Audio analysis, modification | None | Audio Working Group | N/A | Not started | Mozilla Data Audio API, Google Web Audio API | None | None |
Audio volume reading | N/A | Device APIs | N/A | Not started | N/A | None | None |
設(shè)備的適配
移動(dòng)設(shè)備不僅與傳統(tǒng)的電腦有著明顯的差異,就是各種移動(dòng)設(shè)備彼此之間也有著不小的區(qū)別。不同類型的移動(dòng)設(shè)備具有不同大小的屏幕尺寸和分辨率,鍵盤的類型也各有不同,還有許多其他的差異。
Device Description Repository API是一個(gè)服務(wù)器端API,當(dāng)用戶使用移動(dòng)設(shè)備訪問服務(wù)器上的網(wǎng)頁時(shí),服務(wù)器可以獲取設(shè)備的相關(guān)信息,Web開發(fā)人員調(diào)用這個(gè)API就能從服務(wù)器上獲取用戶正在使用的設(shè)備信息了。
客戶端也有一個(gè)相應(yīng)的API,它已經(jīng)作為Systems Information API的一部分;相關(guān)的規(guī)范目前正在被重新修訂,設(shè)備APIs工作組希望能夠進(jìn)一步完善設(shè)備信息API。
為了充分利用手機(jī)設(shè)備上豐富的多媒體資源,The Media Capture API提供了這些設(shè)備的功能和性能信息。
CSS Media Queries使得Web頁面能夠根據(jù)設(shè)備的特性在設(shè)備上更加合理地顯示出來。
Device information
Device Description Repository Simple API | Device Description Working Group (now closed) | Recommendation | finished | N/A | Limited | Good Coverage | |
Systems Information API | Device APIs Working Group | Working Draft | Likely to be vastly reworked | Last update March 2011 | N/A | N/A | |
Media Capture API | Device APIs Working Group | Working Draft | Likely to be vastly reworked | Last update December 2010 | N/A | N/A | |
CSS-based adaptation | Media Queries | CSS Working Group | Candidate Recommendation | Mostly finished | Last update August 2010 | Widely deployed | Good coverage |
表單
基于Web的應(yīng)用程序之所有能夠有豐富的信息主要是靠用戶的輸入。由于移動(dòng)設(shè)備上鍵盤的限制,在移動(dòng)設(shè)備上輸入大量的信息對(duì)很多用戶來說是一件相當(dāng)麻煩的事;HTML5通過添加一組新的表單控制類型來簡(jiǎn)化用戶的輸入:
- 日期時(shí)間條利用一組表單控件(如<input type="date">)使得用戶可以直接使用本地的日期控件;
- <input type="email">、<input type="tel"> 和 <input type="url">可以簡(jiǎn)化用戶對(duì)復(fù)雜數(shù)據(jù)的輸入方式,例如可以使用虛擬鍵盤?;蛘呤抢迷O(shè)備的訪問記錄(如地址簿或者是書簽等)簡(jiǎn)化用戶輸入工作;
- Pattern屬性既能簡(jiǎn)化用戶的輸入,又能避免服務(wù)器端的檢查(服務(wù)器檢查需要花費(fèi)一個(gè)往返的網(wǎng)絡(luò)開銷)或是基于JavaScript的檢查(JavaScript的檢查開銷通常更大);
- Placeholder屬性在用戶輸入文本時(shí),會(huì)根據(jù)需要輸入的文本類型給用戶相應(yīng)的提示信息;
- 新增加的<datalist>元素允許用戶根據(jù)輸入的需要?jiǎng)?chuàng)建新的輸入類型,而不再受限于原有的類型定義。
HTML5 Date and Time state of input element
HTML Working Group | Last Call Working Draft | Stabilizing | Updated regularly | Limited | None |
Customized text entries (tel, email,url) | HTML5 telephone, email and URL state of inputelement | Stabilizing | Updated regularly | Limited (?) | None |
Input pattern | HTML5 pattern attribute | Stabilizing | Updated regularly | Very limited (?) | None |
Input hint | HTML5 placeholder attribute | Stabilizing | Updated regularly | Limited (?) | None |
Pre-defined values for text entries | HTML5 datalist element | Stabilizing | Updated regularly | Very limited (?) | None |
用戶交互
觸摸式交互在移動(dòng)設(shè)備上越來越普及了。雖然傳統(tǒng)的交互方式(如鍵盤、鼠標(biāo))并不會(huì)從未來的Web平臺(tái)上消失,但是無疑觸摸式交互將給Web平臺(tái)帶來更好的用戶體驗(yàn),這一點(diǎn)至關(guān)重要。因此,在DOM上定義觸摸事件的工作已經(jīng)在積極開展了。
另一方面,許多移動(dòng)設(shè)備運(yùn)用觸覺反饋(例如震蕩)創(chuàng)造新的交互方式;Device APIs Working Group有意開發(fā)一個(gè)震動(dòng)API(最近添加到了工作組的近期工作計(jì)劃中)。
由于是在新興的設(shè)備上完成Web開發(fā),而這些設(shè)備又新增了許多用戶交互機(jī)制,這就需要Web開發(fā)者處理更加抽象的用戶操作:除了傳統(tǒng)的“點(diǎn)擊”、“按鍵”、“觸摸”
操作以外,還有諸如“撤銷”、“下一頁”此類的操作,弄清楚用戶如何使用這些操作控制設(shè)備將有助于開發(fā)出獨(dú)立于具體設(shè)備的Web應(yīng)用程序。Web Events Working Group正在開發(fā)抽象DOM事件用于解決上述需求。
用戶通常會(huì)將移動(dòng)設(shè)備隨身攜帶,許多用戶將移動(dòng)設(shè)備當(dāng)做備忘錄:Web Notification提出將這一功能加入到Web環(huán)境中。
同樣的,一個(gè)新添加到Device APIs Working Group 的工作計(jì)劃中的API可以產(chǎn)生系統(tǒng)蜂鳴聲(而不是應(yīng)用程序提供的聲音),從而將各種不同系統(tǒng)采用的機(jī)制整合起來。
移動(dòng)設(shè)備,尤其是手機(jī),通常需要支持聲音交互;HTML Speech Incubator Group希望能夠就用戶通過聲音與Web頁面交互的問題制定一個(gè)標(biāo)準(zhǔn)協(xié)議框架(詳見use cases and requirements)。
Touch Events Specification
Web Events Working Group | Working Draft | Early draft | Updated regularly | Growing deployment | None | ||
Vibration | N/A | Device API | N/A | Not started | Not started | None | None |
Intent-based events | N/A | Web Events Working Group | N/A | Not started | Not started | None | None |
Notification | Web Notifications | Web Notifications Working Group | Working Draft | Early draft | Regularly updated | None | None |
System beeps | N/A | Device API | N/A | Not started | Not started | None | None |
Speech-based interactions | N/A | HTML Speech Incubator Group, planning to request creation of standards-track work | N/A | N/A | Use cases and requirements | N/A | N/A |
Model-based user interfaces | N/A | Proposed Model-Based User Interfaces Working Group | N/A | N/A | Model-based UI Incubator Group report | N/A | N/A |
數(shù)據(jù)存儲(chǔ)
許多應(yīng)用程序的主要功能就是保存信息,顯示信息,以及將系統(tǒng)上其他文件和服務(wù)的數(shù)據(jù)整合起來。
Web Storage規(guī)范為簡(jiǎn)單的數(shù)據(jù)存儲(chǔ)提供了兩個(gè)基本方法——localStorage和sessionStorage,localStorage可以將數(shù)據(jù)一直保留在本地,而localStorage可以在瀏覽器會(huì)話保持期間幫助用戶保存數(shù)據(jù)。
Web平臺(tái)新增了許多用于與設(shè)備文件系統(tǒng)交互的API:File Reader API用于下載文件的內(nèi)容信息,File Writer API用于保存或者修改文件,新增的FileSystems API支持更加常用的文件操作(包括目錄管理操作)。
除了對(duì)文件的操作外,Web平臺(tái)還提供了Indexed Database API,用來操作結(jié)構(gòu)化的數(shù)據(jù)庫對(duì)象,在JavaScript中可以方便地調(diào)用這些API,從而高效地修改和查詢數(shù)據(jù)。值得一提的是,客戶端的基于SQL的數(shù)據(jù)庫從2009年推出發(fā)展到今天,已經(jīng)逐漸被新的系統(tǒng)所拋棄。
Web Storage
Web Applications Working Group | Working Draft | Stabilizing | Updated regularly | Well deployed | None | ||
File reading | File API | Web Applications Working Group | Working Draft | Stabilizing toward LC | Regular updates | Limited (?) | None |
File writing | File API: Writer | Web Applications Working Group | Working Draft | Early draft (but starting to stabilize) | Last update May 2011 | Limited (?) | None |
Filesystems operations | File API: Directories and System | Web Applications Working Group | Working Draft | Early draft | Last update May 2011 | None | None |
Database query/update | Indexed Database API | Web Applications Working Group | Working Draft | Still changing, but starting to stabilize | Regularly updated | Very limited (?) | None |
Web SQL API | Working Group Note | Abandoned | N/A | Limited | N/A |
個(gè)人信息管理
應(yīng)用程序應(yīng)該充分利用已有的數(shù)據(jù)記錄;在移動(dòng)設(shè)備上,地址簿和日歷是非常重要的信息來源,開發(fā)人員可以通過調(diào)用Contacts API和Calendar API獲取這些信息。
Contacts API
Device APIs Working Group | Last Call Working Draft | Stabilizing | Regularly updated | Very limited | early draft | ||
Calendar data | Calendar API | Device APIs Working Group | Working Draft | Still changing | Regularly updated | Very limited | None |
傳感器與硬件集成
移動(dòng)設(shè)備上集成了許多傳感器,方便用戶與虛擬世界交互:如GPS、加速計(jì)、光檢測(cè)器、麥克風(fēng)、攝像頭、溫度計(jì)等。
為了方便Web開發(fā)者利用這些傳感器,需要提供一組接口供開發(fā)者使用。
Geolocation API提供了一個(gè)設(shè)備定位通用接口,并且對(duì)底層技術(shù)(GPS,WIFI網(wǎng)絡(luò)發(fā)現(xiàn),蜂窩網(wǎng)絡(luò)三角測(cè)量等)是透明的。
DeviceOrientation Event Specification也在開發(fā)處理傳感器上的方向和速度信息的方法。
雖然目前還不確定開發(fā)一個(gè)通用的方法是否實(shí)用,但System Information API已經(jīng)計(jì)劃開發(fā)一組通用API,用于提取并監(jiān)控傳感器的數(shù)據(jù)。
正如在多媒體一節(jié)中提到的,目前已經(jīng)有許多工作詣在開發(fā)一組訪問攝影機(jī)和麥克風(fēng)數(shù)據(jù)流的API。
Geolocation API
Geolocation Working Group | Candidate Recommendation | Mostly finished | Regularly updated | Widely deployed | Good coverage | ||
Accelerometer / Orientation | DeviceOrientation Event Specification | Geolocation Working Group | Working Draft | stabilizing; last call planned before November | Regularly updated | Limited, but growing | None |
Battery Status | Battery Status Event | Device APIs Working Group | Working Draft | Stabilizing | Updated regularly | None | None |
Generic sensors | The System Information API | Device APIs Working Group | Working Draft | Needs a lot of changes | Last update Jan 2011 | None | None |
Camera & Microphone streams | WebRTC 1.0: Real-time Communication Between Browsers | Web Real-Time Communications Working Group | N/A | None | Last updated August 23rd | A few experimental ones | None |
網(wǎng)絡(luò)
網(wǎng)絡(luò)連接是移動(dòng)設(shè)備***的優(yōu)勢(shì):Web打破了移動(dòng)設(shè)備之間的界限,上面存儲(chǔ)了海量的信息,并且能夠利用這些信息源源不斷地創(chuàng)造出更加豐富的資源。
Web平臺(tái)上開發(fā)出了越來越多的API用來將不同環(huán)境下的各種網(wǎng)絡(luò)互連起來。
XMLHttpRequest(AJAX中的“X”)是一個(gè)廣泛使用的API,用于通過HTTP和HTTPs協(xié)議從遠(yuǎn)端Web服務(wù)器上下載內(nèi)容。
該規(guī)范的第二版——XMLHttpRequest Level 2 完善了***版的部分功能:能夠在不同的域名中向服務(wù)器發(fā)送請(qǐng)求,在網(wǎng)絡(luò)操作過程中能夠給出反饋,能夠更加有效地處理二進(jìn)制內(nèi)容。
瀏覽器默認(rèn)地禁止一個(gè)Web頁面上跨域名的訪問;這一規(guī)定是為了禁止某些網(wǎng)站濫用甚至是盜用其他Web網(wǎng)站的內(nèi)容。網(wǎng)站可以通過使用Cross-Origin Resource Sharing機(jī)制解除上述限制,從而增強(qiáng)Web程序和Web服務(wù)間的合作。
XMLHttpRequest是一個(gè)由客戶端觸發(fā)的網(wǎng)絡(luò)請(qǐng)求,但受限于移動(dòng)設(shè)備的網(wǎng)絡(luò)能力以及網(wǎng)絡(luò)請(qǐng)求的開銷,***能提供一個(gè)由服務(wù)器觸發(fā)的網(wǎng)絡(luò)請(qǐng)求。Server-Sent EventsAPI允許服務(wù)器將請(qǐng)求推送給客戶端(通過HTTP或是其他協(xié)議)。
基于IETF的WebSocket protocol開發(fā)的WebSocket API,提供了一個(gè)雙向連接,比XMLHttpRequest更加靈活,并且資源占用更少。
當(dāng)然,使用一個(gè)網(wǎng)絡(luò)連接首先需要知道一個(gè)網(wǎng)絡(luò)連接是否已經(jīng)建立,并且能夠識(shí)別當(dāng)前可用的網(wǎng)絡(luò)類型。在Web環(huán)境中,可以通過 HTML5 onLine DOM flag(ononline)查看網(wǎng)絡(luò)連接是否已經(jīng)建立。
network-information API能夠識(shí)別網(wǎng)絡(luò)特征,從而判斷用戶使用的網(wǎng)絡(luò)類型(如用戶使用的是WIFI還是3G)。
XMLHttpRequest
Web Applications Working Group | Candidate Recommendation | Mostly finished | Regularly updated | Widely deployed | Good coverage | ||
XHR2 | XMLHttpRequest Level 2 | Web Applications Working Group | Working Draft | Still changing, but starting to stabilize | Updated regularly | Very limited (?) | None (?) |
Cross-domain requests | Cross-Origin Resource Sharing | Web Applications Working Group | Working Draft | Close to stabilizing | Last update November 2010 | Growing deploymentImplementation data | None (?) |
Server-pushed requests | Server-Sent Events | Web Applications Working Group | Last Call | Still changing but stabilizing | Regularly updated | Growing | None (?) |
Bidirectional connections | The WebSocket API | Web Applications Working Group | Working Draft | Still changing but stabilizing | Regularly updated | Limited, but growing | None |
on-line state | HTML5 onLine DOM state | HTML Working Group | Last Call Working Draft | Mostly stable | regularly updated | Getting deployed | None |
Network characteristics | The Network Information API | Device APIs Working Group | Working Draft | Early draft | Regularly updated | Very limited | N/A |
通訊
一個(gè)好的移動(dòng)開發(fā)平臺(tái)不僅能夠讓用戶享受在線服務(wù),還能允許用戶之間通過設(shè)備或應(yīng)用程序彼此通訊。
Messaging API不僅可以通過連接(如使用sms:,mms:,和mailto:URI schemes)添加信息和發(fā)送信息,還能在信息中添加附件,并降低了信息發(fā)送失敗的概率。
HTML5 Web Messaging的postMessage API可以實(shí)現(xiàn)Web程序之間的交互。
Device APIs Working Group受到Web Introducer和相關(guān)工作的啟發(fā),致力于將各種Web應(yīng)用程序更加緊密地聯(lián)系起來。
Web Real-Time Communications Working Group的成立標(biāo)志著將會(huì)有更加豐富的通訊方式產(chǎn)生:
- 設(shè)備間的P2P連接
- P2P視頻音頻流使得用戶能夠?qū)崟r(shí)通訊
The Messaging API
Device APIs Working Group | Working Draft | Still subject to large changes | Last update July 2011 | None | None | ||
Inter-app communications | HTML5 Web Messaging | Web Applications Working Group | Last Call | Stabilizing | Regularly updated | Limited (?) | None |
Inter-app triggers | None | Possibly Device APIs Working Group | N/A | Not started | Possible inspiration from Web Introducer | None | None |
P2P connections | WebRTC 1.0: Real-time Communication Between Browsers | Web Real-Time Communications Working Group | N/A | None | Last updated Aug 23 | None | None |
P2P Video/Audio streams |
封裝
應(yīng)用程序想要具備良好的用戶體驗(yàn),就必須讓用戶覺得這個(gè)程序是***可用的(即使當(dāng)這個(gè)程序已經(jīng)下線,這點(diǎn)對(duì)于移動(dòng)設(shè)備來說尤為重要),此外讓用戶能夠方便地分享或是從應(yīng)用程序商店購(gòu)買到應(yīng)用程序也是非常重要的——通過將應(yīng)用程序封裝起來能夠很好地解決上述問題。
Web平臺(tái)上新增了兩種Web應(yīng)用程序封裝方法:
- HTML5的 ApplicationCache使用一個(gè)文件列表訪問離線的Web應(yīng)用程序,瀏覽器可以將文件列表上的內(nèi)容緩存在本地;
- W3C Widgets的一系列規(guī)范定義了一種發(fā)布Web應(yīng)用程序的方法——通過配置文件(詳見Widget Packaging and Configuration)將Web應(yīng)用程序以Zip文件的形式發(fā)布;配置文件中定義了應(yīng)用程序的簽名、允許訪問的API、對(duì)網(wǎng)絡(luò)使用的限制等等。
HTML***pplication Cache
HTML Working Group | Last Call Working Draft | Still changing but stabilizing | Regularly updated | Getting deployed | None | ||
Widgets | Widgets Packaging & Configuration | Web Applications Working Group | Proposed Recommendation | Mostly finished | Last update Aug 2011 | Getting deployed | Full coverage |
Digital Signatures for Widgets | Proposed Recommendation | Mostly finished | Last update Aug 2011 | Getting deployed | Full coverage | ||
Widget Access Request Policy | Proposed Recommendation | Mostly finished | Last update Aug 2011 | Getting deployed | Full coverage |
性能和優(yōu)化
由于移動(dòng)設(shè)備的CPU以及電池的限制,移動(dòng)設(shè)備的開發(fā)需要特別關(guān)注性能問題。
Web Performance Working Group的Navigation Timing , Resource Timing, Performance Timeline 和 User Timing提供了許多工具用于幫助開發(fā)者優(yōu)化Web程序的性能。
Efficient Script Yielding的工作為Web開發(fā)者提供了更加高效的異步編程方式。
查看Web頁面是否顯示的API(Page Visibility API)能夠根據(jù)Web程序的需要調(diào)整資源配置,例如當(dāng)頁面最小化時(shí)釋放部分網(wǎng)絡(luò)帶寬。類似地, Timing control for script-based animations API能夠減少播放動(dòng)畫時(shí)使用的資源。
除了優(yōu)化資源外,應(yīng)用程序的響應(yīng)速度也是移動(dòng)用戶體驗(yàn)的重要組成部分。線程工作機(jī)制可以通過Web Workers將資源消耗較大的操作放到后臺(tái)執(zhí)行,從而提高應(yīng)用程序的響應(yīng)速度。
Mobile Web Application Best Practices給出了關(guān)于如何在移動(dòng)設(shè)備上開發(fā)優(yōu)秀的Web App的一些建議。
Timing hooks
Navigation Timing | Web Performance Working Group | Candidate Recommendation | Mostly finished | Regularly updated | Getting deployed | Started | |
Resource timing | Last Call Working Draft | Stabilizing | Regularly updated | None | N/A | ||
Performance Timeline | Working Draft | Early draft | Regularly updated | None | N/A | ||
User timing | Working Draft | Early draft | Regularly updated | None | N/A | ||
Priority handling | Efficient Script Yielding | N/A | Early draft | Regulary updated | None | N/A | |
Page Visibility detection | Page visibility API | Last Call Working Draft | Stabilizing | Regularly updated | None | N/A | |
Animation optimization | Timing control for script-based animations | Working Draft | Early draft | Regularly updated | None | N/A | |
Threading | Web Workers | Web Applications Working Group | Last Call | Stabilizing | Regularly updated | Limited (?) | None |
Optimization Best Practices | Mobile Web Application Best Practices | Mobile Web Best Practices Working Group (now closed) | Standard | Finished | N/A | N/A | N/A |