這是個技術偽命題
五月,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,用的是純靜態的頁面。
(早期的靜態網頁)
最早的動態網站(1993)
主要採用CGI/Perl指令碼技術,能夠實現內容動態,具備了互動性,伺服器能夠訪問檔案系統或資料庫。
缺點:伸縮性差(為每個請求分配一個新的程式)、安全性差(直接使用系統環境變數和檔案系統)、指令碼組織混亂並且缺少一種結構化的構造動態應用程式的方式。
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頁面。
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 協議與後端通訊即可:
前端從 2014 年到 2017 年是混戰期,得益於 Node.js 的輔助加成,外加各種前端優秀的創意和實踐,使得React/Vue/Angular 三足鼎立,加快了標準統一的步伐,無論 React 釋出 v16,增加 Fiber 和Hooks,還是 Vue 3.0 釋出,其實最終都是朝著W3C WebComponents 標準走。
小程式是最近兩年比較火的技術,與PWA比較類似,應用輕量化將逐漸步入穩定期和成熟期。
趨勢背後的思考
由於前端的特殊性,開發者總是要與時俱進熟悉瞭解最新的前沿技術,如果基礎好的話,更容易、更快和更穩的去利用和掌握知識點,甚至能直接改裝熱門技術框架,直接為己用。未來的話,前端工作也會隨著技術的發展而繼續分化和融合,全棧也可能是你未來的一個職業走向。
相關文章
- 技術發力,資本佈局,元宇宙不是偽命題元宇宙
- 雲端計算的安全問題是“偽命題”嗎?
- 企鵝吃喝指南CEO王志偉:內容電商是個偽命題
- 偽命題:Java傳遞的值還是引用?Java
- 信則有不信則無:區塊鏈手機會是個偽命題嗎?區塊鏈
- POS權益證明機制的去中心化是偽命題中心化
- “一切以客戶為中心”對於大部分軟體公司而言是個偽命題嗎?
- 人工智慧是偽命題?“AI國家隊”雲從科技流血上市 短期盈利無望人工智慧AI
- 這些年,我是如何當好一個技術支援的
- 偽AP檢測技術研究
- 健康還是工作,這是個問題
- 妄想只用技術就能為巴黎聖母院這些文物續命?naive!AI
- 人工智慧可以做威脅預測?途隆雲:偽命題!人工智慧
- 震驚!這個技術部落格居然...
- 學Java技術,這些問題要避免Java
- 學Java技術,這些問題要避免!Java
- 用一個簡單問題,我就這樣改良了技術面試面試
- 新零售是世界級新命題
- 一個非技術問題的問題
- 微軟這款硬核遊戲,是如何用技術建立了一個「真實的世界」?微軟遊戲
- 今年阿里雙十一最大的技術功臣,是這個數字作業系統阿里作業系統
- 【基礎】EM 還是 REM?這是一個問題!REM
- 大衛談學習3:方法還是問題,這是個問題!
- 這些年一直是寫程式碼的命
- 修“正道”還是走“邪道”?遊戲延命祕術探究遊戲
- 區塊鏈防偽溯源技術,解決各行各業痛點問題區塊鏈
- 請教這個應用技術如何實現?
- 轉賬問題是屬於業務問題還是屬於技術問題?
- 那些令人細思恐極的AI技術,哪一個戳中你的命門?AI
- 這是標題
- 第一章 聯言命題選言命題及其推理-聯言命題性質
- 第一章 聯言命題選言命題及其推理-選言命題性質
- 這 16 個 CSS 偽類,助你提升佈局效率!CSS
- 想提高團隊技術,來試試這個套路!
- 10個這些年令人驚訝的技術革新
- httpdns是個什麼技術,有什麼用httpdDNS
- 《除錯九法》:除錯是個技術活除錯
- 程式設計師轉AI工程師很難嗎?這6個技術是關鍵程式設計師AI工程師