這是個技術偽命題

An楠發表於2019-06-06

五月,Google 推出了Flutter 1.5,引發了技術圈裡對“全平臺”技術的熱議和思考,Flutter的召喚|趨勢背後的思考。

文末留言,大部分同學在“學和不學”間爭論不休,難道什麼技術火,我們就要學什麼嗎?

沒有人能給出你絕對的答案,“學與不學”本身來講就是個偽命題,大部分都在於你自己的態度和實際業務環境的需求來決策的。

但在技術圈裡,也不乏敢於“嚐鮮”技術人,這群人往往能夠掌握多種技能,並能很快能將這些新技術運用到自己產品和業務當中去,實現商業化。我們將這群人稱之為“全棧工程師”。

本篇文章,我們暫且不再探討要不要全棧,而是想通過研究Web技術的演進路徑,來窺探未來的開發者的職業路徑是怎樣的? 由此帶給大家更多的啟示和參考。

Web技術的演變之路

靜態頁面時代(1990-1991)

HTML技術,主要是文字和圖片(包括gif動態圖片)。

特點:簡單,只能做資訊的展示,無法同使用者進行互動。

1990年,全球資訊網之父蒂姆·伯納斯-李(Tim Berners-Lee)在NeXT電腦上發明了第一個Web瀏覽器。

1991年8月6日,Tim在alt.hypertext新聞組貼出了一份關於World Wide Web的簡單摘要,這標誌了Web頁面在Internet上的首次登場。

最早的Web主要被一幫科學家們用來共享和傳遞資訊,全世界的Web伺服器也就幾十臺。由於僅是用來傳遞資訊,從視覺化方式或從傳遞數量上看,僅比電報強一點點。

當時還沒有JavaScript,用的是純靜態的頁面。

enter image description here

(早期的靜態網頁)

最早的動態網站(1993)

主要採用CGI/Perl指令碼技術,能夠實現內容動態,具備了互動性,伺服器能夠訪問檔案系統或資料庫。

缺點:伸縮性差(為每個請求分配一個新的程式)、安全性差(直接使用系統環境變數和檔案系統)、指令碼組織混亂並且缺少一種結構化的構造動態應用程式的方式。

enter image description here

1994年,Rasmus Lerdorf建立了PHP。

事實上,這個時候的 PHP 只是用 Perl 語言編寫的一系列 CGI 指令碼,用於跟蹤他線上簡歷的訪問情況,統計他自己網站的訪問者。在早期, PHP 並不是一門語言,只是一些工具,提供基本的變數,並使用嵌入式HTML句法自動處理表單變數。

(PHP發展史:https://wenku.baidu.com/view/024d9205a1c7aa00b52acbf8.html)

JavaScript誕生於1995年。起初它的主要目的是處理以前由伺服器端負責的一些表單驗證。

如果能在客戶端完成一些基本的驗證,在當時來講絕對是令人興奮的,於是,就職於網景的布蘭登·艾奇開始著手計劃將LiveScript同時在瀏覽器和伺服器中使用。此時,布蘭登·艾奇為了搭上媒體熱炒Java的順風車,臨時把LiveScript改名為JavaScript,所以從本質上來說JavaScript和Java沒什麼關係。

1996年,ASP 1.0誕生,簡化了Web開發。

由於Web程式開發十分複雜,以至於要製作一個簡單的動態頁面也需要編寫大量的C程式碼才能完成。

於是,Microsoft公司於1996年推出一種Web應用開發技術ASP,用於取代對Web伺服器進行可程式設計擴充套件的CGI標準。

原來要寫C語言,太難了,有了ASP只需要寫寫VBScript指令碼或者JavaScript指令碼即可,而且還有內部元件實現了cookie等高階功能,ADO(ActiveX Data Object)簡化了資料庫的相關操作。

1998年,JSP技術誕生,建立的一種動態技術標準。

JSP也稱為動態頁面,其實就是,在HTML頁面裡,嵌入java程式碼,通過這樣,達到頁面動態改變的功能。JSP在處理的時候,先通過web server的JSP引擎,轉換為servlet,執行servlet,然後將結果合成一個HTML頁面,返回給客戶端。

瀏覽器端的魔術:AJAX (2005-2007)

區域性更新,響應更快,真正用Web應用取代了Web頁面。

enter image description here

Ajax 技術誕生,改變了一切,同時也促成了 Web 2.0 的誕生。

  • 2004年:Gmail

  • 2005年:Google 地圖

前端不再是後端的模板,可以獨立得到各種資料。

谷歌火了,Ajax也成為火爆的前端技術,我們在使用gmail,google map等產品時,有了另一種體驗,點選連結或按鈕後,即便網路不算流暢,頁面不再全白重新重新整理,而是內容漸漸的出現。其原理就是利用Js指令碼到後臺伺服器獲取資料,在瀏覽器前端對資料進行解析和渲染,在這個過程中,大多數頁面並不需要進行改變,只是更新頁面中一部分即可。谷歌公司大力支援Firefox使其重生,並和蘋果一起發展webkit專案,各自發展了chrome和safari瀏覽器,伴隨者頁面渲染能力大力提升同時,Js指令碼的解析能力也突飛猛進。

Ruby on Rails:通過約定的規範方式開發Web應用(2007)

第一次將廣泛應用於桌面應用的開發模式——MVC,搬到了Web應用開發領域。

在隨後的幾年時間裡,AJAX成為了焦點,但在伺服器端仍然使用著舊有的技術。

大概在2007年,37signals公司公開其成員–Ruby on Rails。

那個基於Ruby on Rails 5分鐘構建部落格的演示完全征服了全世界的開發者。

Rails的不同之處在於使用規定的方式去設計你的web應用程式,運用一種已經廣泛在桌面應用開發,但未被搬到web應用上的開發模式。這種模式就叫做模式(資料)-檢視(模板)-控制器(業務邏輯)。Rails強調,“這事就該這麼做”,並且通過許多外掛讓構建web應用再一次更加健全。

客戶端開發技術的崛起(2007-2016)

在2007到2010年期間,湧現了3種開發潮流:

第一,智慧手機和移動應用潮流。通常情況下,許多應用程式同時有web和移動應用兩種版本。儘管如此,服務端仍然返回的是HTML頁面,而不是其它移動應用可以識別。因此,你需要返回的是結構化資料來取代HTML。

第二,開發潮流是jQuery。這是一個非常流行的JavaScript庫,能夠很容易構建動態、美妙的web應用,甚至是AJAX!

第三,潮流是Node.JS的釋出。這是第一次能讓你用JavaScript開發高效能的服務端程式,進而可能結束“客戶端開發者”要知道HTML/JavaScript,“服務端開發者”要知道.NET/C#/Ruby這樣的噩夢。

客戶端開發技術的規範化—從後端到前端(2009-至今)

客戶端框架如Backbone、Ember、Derby、Meteor、AngularJS等等,簡化了客戶端的開發,並且也逐步形成了MVC的模式。這種模式下,前後端分工變得愈加清晰。

伴隨著資訊時代、大資料時代的到來,jQuery 在大量的資料操作中的弊端體現出來了,它在對 DOM 進行大量的操作中,會導致頁面的載入緩慢等問題。

  • 2009 年AngularJS 誕生、Node誕生。
  • 2011 年React 誕生。
  • 2014 年Vue.js 誕生。

Node算是前端的第二次飛躍,它使 JS 在服務端語言中也有了一席之地。

如今,後端負責資料,前端負責其餘工作越發明顯化。它們之間的通訊,只需要後端暴露 RESTful 介面,前端通過 Ajax,以 HTTP 協議與後端通訊即可:

enter image description here

前端從 2014 年到 2017 年是混戰期,得益於 Node.js 的輔助加成,外加各種前端優秀的創意和實踐,使得React/Vue/Angular 三足鼎立,加快了標準統一的步伐,無論 React 釋出 v16,增加 Fiber 和Hooks,還是 Vue 3.0 釋出,其實最終都是朝著W3C WebComponents 標準走。

小程式是最近兩年比較火的技術,與PWA比較類似,應用輕量化將逐漸步入穩定期和成熟期。

趨勢背後的思考

由於前端的特殊性,開發者總是要與時俱進熟悉瞭解最新的前沿技術,如果基礎好的話,更容易、更快和更穩的去利用和掌握知識點,甚至能直接改裝熱門技術框架,直接為己用。未來的話,前端工作也會隨著技術的發展而繼續分化和融合,全棧也可能是你未來的一個職業走向。

擴充閱讀:enter link description here

enter image description here

相關文章