HTML5 之殤

jopen 12年前發布 | 33K 次閱讀 HTML5

        英文原文:The Pain of HTML5

        任何新技術面臨的關鍵問題之一是,要么被采用并且舍棄那些不能接受它的用戶;要么錯失新的發展機會,最終變成無關緊要的技術。比如,如果你要在 網站開發中使用 HTML5 技術,這就意味著要舍棄那些仍然使用舊版 IE 的用戶。不過開發者也可以通過兼容工作,讓用戶也能體驗到 HTML5 的價值,同時也可以利用這個機會,讓 HTML5 技術突顯出它的重要作用。

        然而,并非所有的事情都能如人所愿。HTML5目前還處于發展的初級階段,部分特性還不能完美的實現。下面列舉出了 HTML5 的一些不足之處。

HTML5 之殤

        1.   IE 瀏覽器

        IE 瀏覽器是 Web 新技術發展道路上的絆腳石。IE6的輝煌時代已經結束,IE7也是這樣,即便是 IE8,也仍然不能稱為一款“現代瀏覽器”。而 IE9 對 HTML5 的支持尚不完全,比如不支持 Web Sockets 和 Web Workers。

        由于 IE8 不支持 ECMAScript5,因此開發者必須考慮怎樣處理 array.IndexOf、array. each、Date.now ()、獲取和設置屬性、處理許多有用的 JavaScript 包。

        在 IE8 和 IE9 中,用戶可以提交跨源請求,但不能使用 XMLHttpRequest。

        只有 IE10 可以稱得上是“現代瀏覽器”,但是它不能在任何低于 Windows 8 的系統環境下運行。那么有多少比例的用戶正在使用 IE10 呢?

        2.   離線存儲并不安全

        當應用程序出現問題時,需要通過日志對它進行調查研究。但是如果應用程序運行好幾天也不能發送一個日志,開發者就需要考慮客戶端是否出現了問題。

        日志記錄會使客戶端速度變慢、存儲量增長,而且如果在發現問題時才進行日志記錄就太晚了。而當前的 HTML5 技術,允許只存儲最新的日志信息,使性能影響降到最低,并且當問題再次出現時,用戶能夠進行恢復。

        當然,理想的做法是在后臺寫入日志來實現某種形式的離線存儲(不影響客戶端的響應),這樣的話,當出現問題甚至是機器突然重啟,日志也能恢復。

        這個過程可以通過 Webworker 中的 FileSystem API 來實現。然而,當前只有 Chrome 瀏覽器支持 FileSystem API。

        用戶可以使用 localStorage 來代替 FileSytem API,可惜 localStorage 是一個同布 API,它的大量的數據將會增加加載時間

        更糟糕的是,實際上不能在本地機器上存儲未加密的日志,因為它們可能包含機密信息。然而目前的一些簡單的日志記錄方案看起來非常混亂,性能也不好,由于 HTML5 中沒有針對存儲的加密 API,開發者還需要自己對這些日志進行加密。

        3.   不能很好的支持窗口間共享

        有時候你可能想在不同的窗口中共享同一個服務器的連接信息,現在可以使用 postMessage 來實現,但是你需要有你想發送消息的窗口的句柄。但是如何得知用戶當前打開了哪些標簽頁呢?在 Chrome 中,不同的標簽頁使用不同的進程,這種功能對于創建長時間運行的應用程序非常有用。

        在 Firefox 中不支持這一特性,但可以使用 SharedWebWorker 來代替。

        你可以使用 onstorage 事件來對所有其他窗口進行廣播,但問題是,并不是所有的瀏覽器都能提供進行存儲事件的窗口的句柄。

        4.   Web Workers 細節尚未完全實現

        通常情況下,當在 HTML 頁面中執行腳本時,頁面的狀態是不可響應的,直到腳本完成。而 Web Workers 是運行在后臺的 JavaScript,獨立于其他腳本,不會影響頁面的性能和操作。

        但遺憾的是,Firefox 在 Workers 內部并不支持 WebSockets

        無論是 Chrome 還是 Firefox,都不能很好地解決基于代碼位置的 Worker 腳本無法實例化頁面本身的問題,因此代碼庫必須部署在為頁面提供服務的同一個 web 服務器上,并且不能包含在不同層級的頁面中,也無法在不更改代碼的前提下為腳本文件重命名。盡管規范明確指出,worker 腳本應該能夠被相關的腳本實例化。

        總結

        HTML5是美妙的,它讓開發者在研究新的、有趣的功能時候更有成就感。但是,當開發者遇到 HTML5 不能實現的功能或者不能很好支持該技術的瀏覽器時(特別是用戶都在使用舊版 IE 時),又會充滿挫敗感。

        HTML5正在快速向前發展,并將逐步實現標準化,相信在不久的將來,本文所列出的這些不足之處都將不復存在,屆時,用戶將有一個完全不同的互聯網體驗。

來自: www.iteye.com
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!