前端的逆襲 Node的出現令JavaScript重生
2006年至今,我們時常可以看到JavaScript的新聞,剛開始只是JavaScript引擎效能的提升,到後來發現很多是來自HTML5和Node創造的奇蹟。如果只看表面,很容易讓人感覺這又是一顆衛星。這種現象讓人覺得不可信,所以出現了以下各種版本的誤解。
- 為了後端而後端,有意思嗎?
- 怎麼又發明了一門新語言?
- JavaScript承擔的責任太重了。
- 直覺上,JavaScript不應該執行在後端。
- 前端工程師要逆襲了。
一方面,大家看到JavaScript在各個地方放出異彩,其他語言的開發者既羨慕它的成果,又擔心它對當前所從事的語言造成衝擊;另一方面,人們還是有JavaScript只能做前端指令碼的定勢思維。究其原因,還是因為人們缺乏歷史觀層次上的認知,所以會產生一些莫須有的惴惴不安。
1995年,JavaScript隨網景公司釋出的Netscape Navigator 2.0釋出,它最早命名為LiveScript,隨後更名為JavaScript。它出自如今的Mozilla公司的CTO——Brendan Eich之手,其產生來源於網景公司釋出的Netscape Navigator瀏覽器需要一種指令碼語言來協助瀏覽器做一些簡單的動態操作。當時網景公司與Sun公司合作密切,不懂技術的管理層希望得到一個Java的指令碼版語言,以期能像Java一樣風靡。Brendan Eich原本進入網景公司是希望做Scheme語言的開發,但是卻接到了一個不喜歡的任務,但迫於當時形勢,不得不完成此事,於是JavaScript之父在10天的時間裡倉促完成了JavaScript的設計,當時的專案代號是Mocha,名字叫LiveScript。
這門語言除了看起來像Java外,本質與Java語言相去甚遠,管理層期望的Java Script其實借鑑了C、Scheme、Self、Java的設計。儘管倉促,但是這門語言還是借鑑了其他語言的不少優點,如函式式、原型鏈繼承等。處於Java陰影下的這門語言獲得了它最終的名字:JavaScript。至今,仍然還有許多人分不清Java與JavaScript的關係,就像分不清雷鋒與雷峰塔一樣。
雖然JavaScript的產生與Netscape Navigator瀏覽器的需求有關係,但它並非只是設計出來用於瀏覽器前端的。早在1994年,網景公司就公佈了其Netscape Enterprise Server中的一種伺服器端指令碼實現,它的名字叫LiveWire,是最早的伺服器端JavaScript,甚至早於瀏覽器中的JavaScript公佈。對於這門圖靈完備的語言,網景早就開始嘗試將它用在後端。
隨後,微軟在第一次瀏覽器大戰時,於1996年釋出的IE 3.0中也包含了它的指令碼語言:JScript。基於商標的原因,它叫JScript,但是與JavaScript相容。在1997年年初,微軟在它的伺服器IIS 3.0中也包含了JScript,這就是我們在ASP中能使用的指令碼語言。鑑於微軟處處與網景針鋒相對,出於保護自己的目的,網景公司推進了JavaScript的標準化程式,於1996年11月將JavaScript遞交給ECMA國際標準組織,在1997年7月公佈了第一個版本,是為ECMA-262號標準,又稱ECMAScript。
可以看到,JavaScript一早就能執行在前後端,但風雲變幻,在前後端各自的待遇卻不盡相同。伴隨著Java、PHP、.NET等伺服器端技術的風靡,與前端瀏覽器中的JavaScript越來越重要相比,伺服器端JavaScript逐漸式微。只剩下Rhino、SpiderMonkey用於工具。
然而,這個世界是變化的。第一次瀏覽器大戰落幕後的JavaScript的世界有些平靜,但依然在萌生一些變化。Google對Ajax的應用讓JavaScript變得越來越重要。Firefox的釋出掀起了對IE的反攻,迎來了第二次瀏覽器大戰,競爭令JavaScript的效能不斷提升,Chrome的加入令它高潮迭出。CommonJS規範的提出,不斷在完善JavaScript。ECMAScript標準的不斷推進,令語言更加精煉簡潔,不停地去蕪存菁。
瀏覽器端JavaScript在Web應用中盛行,甚至讓人們忘掉了JavaScript可以在伺服器端執行這碼事。但是,伺服器端JavaScript現在回來了,因為Node誕生了。Node的誕生離不開上述的歷史契機,伺服器端JavaScript在漫長的歷史中長期停滯留下空白,但Node重新將這個領域啟用。Ryan Dahl基於對高效能Web伺服器的探索,無意間促成了伺服器端JavaScript領域的煥然一新。Node憑藉V8的高效能和非同步I/O模型將JavaScript重新推向了一個高潮。現在,Node不僅滿足JavaScript同時執行在前後端,而且效能還十分高效。與傳統印象中的不同,它甚至可比於當前的高效指令碼語言。
奇妙的反應還在繼續,前後端要跨語言開發的現狀已經開始改變,因為語言堆疊的不同,開發者的分工也進行了細分:前端工程師和後端工程師。專業技能因為分工而精進,但也將技能變為專利,似乎前端工程師不能進行後端開發,後端工程師搞不定前端開發,猶如樹立的牆。但Node的出現令這種分工的界限又開始模糊了。同時一些後端工程師也關注到Node,他們甚至不關心前後端語言是否一致,而是赤裸裸地表示對Node高效能的垂涎,如實時、高併發等。
大量的前後端工程師加入了Node的開發陣營,GitHub上JavaScript是最活躍的開發語言,NPM社群第三方模組恐怖的增長速度和下載量都昭示著這個過程不可逆,在這裡吼一聲萬能的NPM,總能找到你需要的解決方案。很多不斷湧現的專案和創意都因為Node和前端開發能共用一種語言而獨特。換言之,Node的本意是提供一個高效能的面向網路的執行平臺,但無意間促成了JavaScript社群的繁榮,並進而形成強大的生態系統。
Node的誕生歷程如下所示。
- 2009年3月,Ryan Dahl在其部落格上宣佈準備基於V8建立一個輕量級的Web伺服器並提供一套庫。
- 2009年5月,Ryan Dahl在GitHub上釋出了最初的版本。
- 2009年12月和2010年4月,兩屆JSConf大會都安排了Node的講座。
- 2010年年底,Node獲得矽谷雲端計算服務商Joyent公司的資助,其創始人Ryan Dahl加入Joyent公司全職負責Node的發展。
- 2011年7月,Node在微軟的支援下發布了其Windows版本。
- 2011年11月,Node超越Ruby on Rails,成為GitHub上關注度最高的專案(隨後被Bootstrap專案超越,目前仍居第二)。
- 2012年1月底,Ryan Dahl在對Node架構設計滿意的情況下,將掌門人的身份轉交給Isaac Z. Schlueter,自己轉向一些研究專案。Isaac Z. Schlueter是Node的包管理器NPM的作者,之後Node的版本釋出和bug修復等工作由他接手。
- 截至筆者執筆之日(2013年7月13日),釋出的Node穩定版為v0.10.13,非穩定版為v0.11.4,NPM的官方模組數達到34 943個,模組的周下載量為1479萬次。
- 隨後,Node的釋出計劃主要集中在效能提升上,在v0.14之後,正式釋出出v1.0版本。
想要深入瞭解Node來看看這本書《深入淺出Node.js》
閱讀本書,開啟你人生的第一個Node節點。
相關文章
- 從前端到全端:JavaScript逆襲之路前端JavaScript
- EXCEL憋出大招,逆襲大資料的黑馬出現了Excel大資料
- 小李的玩伴逆襲之路
- 網管到CEO的10年逆襲之路
- 難民營裡出來的非洲小夥 憑一款遊戲實現人生逆襲遊戲
- 取代不了 C/C++ 的 Rust 如何“逆襲”?C++Rust
- 瑞幸盈利,加速逆襲
- 逆襲、抄襲...20年後的4399,在韓國絕地反擊
- 揚長補短 浪潮雲平臺的逆襲
- 網易出海,中國遊戲的順差逆襲遊戲
- 一個獨立開發者的逆襲成長之路
- 這款首月流水破億的手遊,如何實現TapTap 5.2分到8.7分的逆襲?APT
- 前端Node的實用方法前端
- 從0到1的逆襲之路,Python改變你的學習方式Python
- 面渣逆襲:RocketMQ二十三問MQ
- BCH硬分叉,BitcoinABC強勢逆襲BitcoinSV
- ChatGpt的出現,前端真的已死?ChatGPT前端
- TIOBE 5 月程式語言排行榜:暴漲的 C,逆襲的 Scala
- JavaScript統計字元出現的次數JavaScript字元
- Flutter終將逆襲!1.2版本釋出,或將統一江湖Flutter
- 頻繁佈局動作不斷的暴雪將會逆襲麼?
- 給你一個人生的華麗逆襲——小豬CMS洪濤
- 一代傳奇的逆襲:《街頭霸王 3》口述歷史
- 菜鳥變大神,測試人才的逆襲之路就靠它了!
- 中小型生鮮配送企業如何抓住機遇實現逆襲
- 【web前端】用javascript實現物件的深複製Web前端JavaScript物件
- 出海軟體草根逆襲打法是什麼?
- 面渣逆襲:Java集合連環三十問Java
- 全棧工程師為啥能夠逆襲?全棧工程師
- 街機的重生
- 前端-JavaScript中的class前端JavaScript
- 全力祝你能逆襲成為一流的Android高階工程師Android工程師
- “我一個專科生,畢業後才發現,逆襲有多難”
- 拼多多逆襲記:追趕淘寶的法寶和出海佈局的未來
- AMD 15年來首超Intel 這逆襲太猛Intel
- 絕了!Python又放大招,逆襲宇宙語言!Python
- 7年,從“遊戲少年”到大廠技術總監的逆襲之路遊戲
- 資料告訴你,抖音是怎麼在半年之內逆襲的
- 詳談javascript和node的事件迴圈JavaScript事件