這些特性對促進HTML5開發很有幫助,我們挑選出其中重要的幾條:
WebGL 3D Graphics
3D圖形的硬件加速支持,對web開發者來說這無疑是一個非常重要的特性。我們很想看到這條特性在遊戲中有更多的應用,不過它還有更多的其它用法,特別是在動畫和變換的領域裏。想快速瞭解它能幹什麼,點擊 WebGL Sprite Particle Demo
CSS Shapes
能夠控制文字層的形狀,來形成更爲多變的文字佈局。
HTML模板
Web組件的基礎元素之一。它讓我們離真正的Web模塊化和更多潛在應用又近了一步,我們將更少的依賴polyfill。
導航/更精確的計時API
多數人可能用不到,但對於測試來說是非常讚的特性。
IndexedDB
HTML5的Web SQL標準已不再維護並很可能在將來被廢棄,使用IndexedDB將擁有很好的跨平臺支持(iOS、Android、Chrome for Android、Safari、IE移動版等)。
SVG片段標示符
這個特性隱藏在神祕的名字下面,但相信我們,它是一個非常強大的特性。它能構建非常強大的向量化精靈表。這不僅在web遊戲中非常重要,在動態圖標和其他動態UI組件裏也非常重要。
作爲移動web開發者,你可能已經習慣於以最新瀏覽器特性爲目標而開發了,我們知道蘋果的升級系統能讓iOS 8迅速普及,如果你的應用專門爲iOS而開發,那麼你現在就能利用像IndexedDB、SVG片段標示符等新特性了。如果你想兼容iOS 7或者進行跨平臺開發,你能使用Sencha Touch內建的系統探測來利用這些特性。Sencha Touch讓你能現在就使用這些新特性並逐步的淘汰舊代碼。
全新的WKWebView
隨着iOS 8的發佈,我們同時痛並快樂着,因爲iOS 8帶來了一些碎片化的問題。iOS 8裏面內建了兩個原生的webview,第一個是我們知道並喜愛的UIWebView,它因爲兼容性而保留下來,但幸運的是,蘋果並沒有簡單的將舊iOS 7 UIWebView裝進iOS 8裏,而是升級了WebKit核心模塊併發布了全新的WKWebView。WKWebView將被hybrid app所使用。它使用了Nitro JS引擎,經我們測試至少比UIWebView的性能高四倍。這將很有可能引領hybrid app獲得巨大成功。不過,目前它還有一些影響所有人的重大bug,下面我們將談到這一點。
不過好消息是從Web開發的遠景看來,全新的高性能WKWebView向着正確的方向走了一大步。即使現在Javascript已經很少成爲應用瓶頸,更典型的問題是動畫和DOM重繪上,我們相信隨着對DOM核心的實質化的改進,WKWebView將幫助Sencha Touch應用在性能上看到巨大的改進。
性能的全面提升
對版本升級的性能測試總是必要的,並且這一次我們發現了一些更有趣的結果。總體上來說,升級到iOS 8看上去對所有用戶都有利的。這裏有一些指標在iOS 8裏稍微下降了,如Base64和代碼調用。讓我們來仔細的分析一下這些圖表,來弄清楚它們都代表什麼。
注意:所有測試都在第5代iPod Touch上進行,旨在找出iOS開發所需要面臨的性能下限。
Source:http://octane-benchmark.googlecode.com/svn/tags/v1/index.html
這些測試裏只有CodeLoad指標iOS 8的表現略低,CodeLoad是評價JS引擎在加載非常大的JS文件後需要花多長時間開始運行,這對於Closure和jQuery這樣的庫來說是需要引起注意的。
Source:http://dromaeo.com/?dom
實際的測試表現比圖表上的還要好,Dom Query的巨大提升掩蓋了其他幾項其實也是提升很大的,其中Attributes提升122%、Modification提升65%、Dom Traversal提升48%,而Dom Query的提升則是驚人的308%。
Source:http://dromaeo.com/?cssquery
CSS選擇器的測試,iOS 8也獲得了全面的提升,Ext JS在簡單的移到iOS 8 Safari之後即獲得126%的時間提升。
需要注意的是CSS選擇器使用的是Ext JS 3.x版本,而現在Ext JS 5.x版本已經發布,所以獲得的提升還要更大。
Source:http://dromaeo.com/?dromaeo
這裏Base64和Code Eval性能表現有了微小的下降,不過就像前面所說的,相對於對於JS引擎的效率來說,GPU合成纔是更值得關注的,而且其他幾項的提升也都非常大。
Source: http://ie.microsoft.com/testdrive/performance/fishietank/
這個測試結果已無需多說,它表明iOS 8在Canvas方面有非常大的改進。
Source: http://dromaeo.com/?cssquery
注意這個測試時iOS 8裏面兩個webview之間測試,WKWebView全面勝出。
Source: https://www.webkit.org/perf/sunspider/sunspider.html
Sunspider測試的結果相差不大。
Source: http://html5test.com/
HTML5測試表明瞭iOS 8在HTML5支持方面也有了明顯提升,我們來簡單的分析一下其中的重要結果:
· 無縫的iFrame從iOS 8裏面移除
· IndexedDB被添加到iOS 8 Safari和WKWebView中
· IndexedDB目前不支持iOS 8 UIWebView和Homescreen app(設置主屏快捷方式的web app)
· Objectstore ArrayBuffer已經在iOS 8 Safari和WKWebView中生效(但是HTML5測試沒能測出來,要不然測試得分將達到440分)
· Objectstore ArrayBuffer不支持iOS 8 UIWebView和Homescreen app
· WebGL 3D Graphics被添加到iOS 8 Safari、WKWebView、UIWebView和Homescreen app中
· UIWebView、WKWebView和Homescreen app的userAgent是完全一致的
儘管蘋果爲了保持WKWebView、UIWebView和Homescreen app有同一水平的可用性而做了不少工作,但其中的差異仍然造成了一些困擾,由於三者的userAgent是一樣的,開發者需要自己去標示這三者並小心的使用新特性。
Bug說明
我們都知道沒有軟件的發佈沒有伴隨着bug的,iOS 8也不例外。經過探索我們發現了3個主要問題,將影響大多數HTML5開發者。
WKWebView 無法加載本地文件
測試中WKWebView無法讀取本地文件,這讓使用PhoneGap/Cordova開發,能提供離線功能的應用失去了用武之地。比如,它不能加載本地的index.html,但訪問Web網站的功能是好的。
XHR本地文件訪問
在WKWebView中XHR無法將本地文件發送到Web,比如使用AJAX來提交系統圖庫中的圖片將出現錯誤。
Homescreen app在鎖定/喚醒後失去計時功能
WKWebView中Homescreen app在鎖定喚醒之後帶計時功能的函數將失效,如setTimeout、requestAnimationFrame等。
不過好消息是這些Bug僅影響WKWebView應用,如果使用iOS 8 UIWebView則不會受到影響。
即將到來
總之,我們非常高興的看到iOS 8的發佈,以及蘋果在iOS 8上表明的對HTML5的態度,因爲性能改進和新特性將極大的提升用戶在iOS 8上使用Web App的體驗。
Source: caniuse.com
如果我們看得更遠的話,我們會發現iOS 8和Chrome for Android在一些卓越的新特性上有許多交叉,Chrome for Android其實已經部分的支持了WebGL 3D Graphics但一些舊的機型沒有能力來驅動它。
總結
對Web開發者來說,iOS 8無疑是一個令人激動的發佈,它擁有激動人心的新特性和重大的性能改進,將極大的促進HTML5跨平臺開發。