今天,web僅僅是另外一個原生平臺,展望未來,它不得不憑借自身的獨特優勢與原生平臺進行競爭,而不是憑借internet賦予它的優勢,因為其他原生平臺也正在實現并擁有這些相同的優勢。當你決定你的下一個應用是使用web平臺還是其他平臺時,你要回答的一個棘手問題是,采用原生應用來展現用戶界面,還是通過訪問URL和HTML服務器,著兩種方式那種更好。Web應用也正在實現原生平臺的一些功能(像本地存儲和離線運行模式),Web應用和原生應用之間的界限越來越模糊了。像Palm web和Google Chrome這樣的操作系統表面,原生技術就是web技術。
我們需要了解,運行再這樣一個操作系統上的web應用是一個原生應用。這樣說來,我們知識要決定采用哪種原生操作系統和框架,選擇一個能夠提供良好用戶體驗的操作系統。然后,我們還要選擇合適的原生編碼技術:原生web應用上的HTML、CSS和Javascript,原生IOS應用上的Objective-C和Cocoa Touch,Android應用上的Android SDK和Java,windows Phone應用上的C#和.NET等。最后,無論哪一個平臺和技術贏了,很明顯地,將來的趨勢都是原生,web僅僅又是另一個客戶端。現在,關鍵問題不是“我們是要web還是原生”,而是“我們的新產品應該支持哪一個或哪幾個平臺,應該采用哪種客戶端技術或那些客戶端技術”。
要回答這個問題,我們需要了解我們產品的本質,特別是,我們的產品介于文檔和應用之間時。
Web產品- -般會被分為內容型和行為型兩種。我們通常將內容型的產品稱為一個網站,行為型網站的稱為一個應用。你的產品可能不屬于這兩個類別中的任何一個,可能是處于這兩種類別之間的。當一個產品更接近內容型時,我們會使用漸進增強的技術分層實現基本功能和基于內容的核心交互動作, .以此保證更多的人們能夠訪問到。這些漸進增追的功能通常既不是先進的格式或布局,也不是一些別出心 裁的導引類交互行為。我們可以使內容適合于不同尺寸的屏幕,使有限的導引類交互行為適合于不同的輸入機制。這不是一-項簡 單的工程,但也不是不可能實現的。然而,當產品從文檔型向應用型轉變時,實現漸進增強將變得更加困難。事實上,這也可能會變得完全沒有意義或不可能。例如你將怎么優雅降級一個圖片在線編輯器?再一個不能希納是圖形的功能型手機上,一個圖形編輯器應如何工作?你將會使其顯示什么內容?應用不是內容型的,而是行為型的。無論應用程序是什么內容,我們對其進行優雅降級將不總是有意義。應用通常是完全由行為構成的,這些行為促使用戶去創建內容。再來看圖片編輯器的例子:圖片編輯器本身沒有任何內容,但它能夠使用戶創建內容。為了創建卓越的用戶體驗,我們需要保持專注,盡可能以最好的方式去滿足我們用戶的需求。假設時間和資源不受限制,我們可以優化我們的應用在每一個設備和平臺上的用戶體驗。然而,假設在實際項目中我們的時間有限,預算也有限,我們就必須要選擇滿足哪些用戶,解決哪些問題,優化哪些平臺和設備上的產品。我們這么做不是要去除不必要的用戶,而是因為我們意識到,為每個人提供卓越的用戶體驗是不切實際的。畢竟,沒有哪個產品團隊有足夠資源來創建一些能夠為每個用戶都提供卓越用戶體驗的應用。