Web不是未來會贏,而是已經贏了

infoq發表於2016-11-16

  過去20多年來,Web已由一個基本的文件共享網路發展成為誕生之初我們根本無法設想的,無所不能的平臺。自面世之日起,Web就在努力迎合使用者的各種需求,雖然發展過程中也曾犯過各種錯誤,但這些問題陸續都已順利解決。諸如Flash和Silverlight等外掛本有機會統治整個市場,因為Web本身當時還在匍匐前進中,很多方面尚不能滿足使用者的需求。但當智慧手機引發的革命使得大家逐漸忘卻桌上型電腦(和各種外掛),轉為使用體積更小,同時效能不那麼強大的便攜裝置後,大環境又一次發生了鉅變。

 “移動”的世界到底是咋回事?

  距離人們在“水果店”外排隊購買初代iPhone到現在已經差不多10年了,Web技術至今也還沒有全面成為移動領域的“一哥”。“移動化”的Web能力依然落後於原生應用甚至桌面瀏覽器。Flash雖然算是死了,但HTML5依然沒有因此而能稱王。然而越來越多的開發者開始使用這種技術開發自己的移動體驗,Gartner稱到2016年底,超過50%的移動應用將會使用混合方式開發。

  諸如React Native和Phonegap(Cordova)等工具為Web開發者提供了一種使用Web技術構建原生應用的備選方案。這種混合方式在時間和成本方面的效益更高:開發者無需專門為每個移動平臺從零開始構建應用,而是可以編寫基於HTML5的程式碼,只須編寫一次,少量調整後即可重複部署至iOS、Android、Windows Phone等平臺。

  谷歌也在想方設法推進Web平臺技術的發展。他們通過自家的作業系統Chrome OS作為標杆向大家展示Web技術的各種可能性,甚至向我們展示了App Store本應能做到的一切。Chrome OS完全依賴Web技術,除了可供開發者用在自己的Chrome應用中,由瀏覽器提供的JavaScript API之外,不包含任何型別的原生備選方案。但Chrome OS並不能算作一種移動平臺,尤其是考慮到該系統內建了一個桌面級的瀏覽器,並且只安裝在一些小型筆記本上,因此谷歌又提出了Progressive Web Apps的概念,藉此打造易用性更強,更接近原生應用體驗的Web應用。理論上這種應用的實際使用效果還不錯,並且應該成為未來幾年裡Web技術的發展方向,但目前這依然僅僅是一個願景創意,只能用於谷歌自己的Android版Chrome瀏覽器,該技術還有很長的路要走。

 JavaScript的革命

  雖然大部分人依然認為JavaScript只是一種前端Web開發技術,但實際上JavaScript已經逐漸滲透至現代化計算領域的每個角落。在我看來,Node是PHP的未來。Node易於學習,易於安裝和開發。Node.js唯一欠缺的是託管方面的廣泛支援。大部分Web託管服務依然只支援PHP,但Node.js也為想要嘗試新技術的託管公司提供了一個好機會。

  IoT(物聯網)甚至VR(虛擬現實)領域也可以見到JavaScript的身影。知名的JavaScript庫Johnny Five就可以用於幾乎所有新型的微處理控制器(Microcontroller,也許你喜歡與用其他名字稱呼這種技術)。Tessel也很好地證明了JavaScript可以實現的豐富用途,它已經不單純是一種庫,更像是一種依賴JavaScript的完整裝置。

  去年這時候Mozilla釋出了A-Frame。雖然該技術並未獲得應有的廣泛關注,但這實際上是一種非常讓人吃驚的庫。基於Three.js構建的A-Frame使得開發者可以建立基於Web的虛擬現實體驗。我自己嘗試過這種技術,不得不說這個庫太偉大了。問題在於VR技術的重要性並不像大家想象中(本應該?)的那麼高。也許有朝一日虛擬現實技術會變得極為平常普遍,但也許人們再也不會為其感到激動了。

 社群

  無論公司或個人,總是需要Web的,應用通常包含的內容還是不如網站那麼豐富。例如手機銀行,雖然可以在銀行的應用中辦理很多業務,但通常就有些業務無法支援。網站的成本更低,更易於訪問,通常來說開發過程也相對更為簡單,為Web技術背後的開源社群在近年來也已經對Web技術進行了大刀闊斧的革新。

  諸如jQuery和Bootstrap等框架使得不同技術水平的開發者可以更容易地進行Web開發。一段時間來,似乎接下來需要考慮的就是Angular了,然而該技術在向後相容性方面還沒有達到前任所實現的高度。市面上還有大量都很不錯的MV*庫,例如Backbone、Knockout、Ember,以及Vue等,因此開發者並不需要固守於Angular,尤其是該技術會使得他們無法繼續使用原有的程式碼。

  我認為可以說Web開發的未來主要還會落在React身上。Facebook開發的庫在Web開發社群中曾引起熱議,經過不斷的完善這些庫已成為大家的首選,而不像Angular那樣做的太過火。我認為,React未來面臨的最大挑戰在於接受度。因此問題實際上就變成:網站真的需要React嗎?

 永不停歇的成長

  Web技術依然在以穩定的速率成長著,未來很長時間內還會繼續維持這樣的步伐。目前預計全球有34億網民,數量已接近全球人口總數的一半。隨著另一半人口開始上網,Web技術將再一次遭遇自己最大的宿敵:瀏覽器的支援。目前大部分新晉網民居住在新興市場國家,甚至第三世界國家,他們不可能使用裝有Chrome 53的全新Macbook上網。如果夠幸運,他們使用的可能也僅僅是執行老版Android瀏覽器的三星Galaxy S2手機。

  這就給Web開發者造成了另一個問題:如何讓自己的網站能被這些瀏覽器不支援最新功能,並且網速不快的網民順利訪問。很多企業已經因為類似這樣的問題錯失了大量潛在使用者。據估計到2020年,印度將有另外3.5億人開始上網,美國人口總數都沒這麼多。

 從此往後

  為了拉攏這些新使用者,網站需要變得比以往任何時候更輕巧,更易於訪問。雖然算不上一個網站,但YouTube Go就是個不錯的例子,這是一種輕量級版本的YouTube,專為諸如印度等國家網速不夠快的使用者打造。你可以關注一下他們是如何通過短時間內進行的一些小幅改動對自己的應用進行優化,使其更容易被網速不高的使用者所使用的。這一過程中最難的部分是如何在自己無法獲得切身體會的前提下,發現應用中需要改動的部分,並決定具體該如何改動。谷歌CEO Sundar Pichai最近曾提到“對谷歌來說,解決諸如印度使用者遇到的此類[問題]甚至讓谷歌自己得到了創新靈感”,畢竟有些時候少就是多(Less is more)。因此我認為React在全球採用率方面無法實現jQuery那樣的高度,不是因為React不夠好,而是因為目前並不需要它。

 針對未來的想法

  有件事是確定的:Web技術還會繼續發展。Web是一種依然在不斷擴張的數字化領域,已在我們每個人的生活中佔據了越來越大的比重。對於零零後(L世代)來說,Web已經不僅僅是一種技術創新,而成了自己身份的一部分。下一場戰爭將以Web為戰場,下一次革命將發生在Web上,自由世界的下一任領袖將從現在的Web中評選而來。然而Web最令人稱道的地方在於它是對所有人開放的。Web不歸任何人所擁有,或換句話說,任何人都是Web的主人。但並非所有人都行使了自己的主人翁權利。

  也許從今往後的某一天,文盲和非文盲之間的差別不再看文字的運用能力,而是看是否會寫程式碼(書寫),或至少能讀懂程式碼(閱讀)。那麼多人嚴重依賴自己哪怕連最淺顯的理解都不具備的東西,這件事想想就讓人感覺恐怖。正如Steve Jobs曾經說過的:“在網上,哪怕全球最小的公司看起來也和最大規模的公司一樣大”,這句話直到今天依然是真理。Web比以往任何時候具備更多的潛力。隨著越來越多的邏輯開始包含在客戶端,隨著JavaScript成為Web上的通用語言,你也需要想方設法保護這些網站,因為Web中也將出現越來越多的威脅。

  Jscrambler 提供了一種執行時應用程式自保護(RASP)解決方案,該方案可為客戶端Web應用程式提供有效的保護,防範執行時攻擊。在該解決方案的幫助下,使用者的Web應用程式可通過針對JavaScript量身打造的反除錯和反篡改技術(均為流行的應用程式保護方法)自我防護並檢測篡改。

  作者:Niels Klom,英文原文:The Web Is Not Tomorrow But Today

相關文章