2006年至今,我們時??梢钥吹?a target="_blank">JavaScript的新聞,剛開始只是JavaScript引擎性能的提升,到后來發(fā)現(xiàn)很多是來自HTML5和Node創(chuàng)造的奇跡。如果只看表面,很容易讓人感覺這又是一顆衛(wèi)星。這種現(xiàn)象讓人覺得不可信,所以出現(xiàn)了以下各種版本的誤解。
為了后端而后端,有意思嗎?
怎么又發(fā)明了一門新語言?
JavaScript承擔的責任太重了。
直覺上,JavaScript不應該運行在后端。
前端工程師要逆襲了。
一方面,大家看到JavaScript在各個地方放出異彩,其他語言的開發(fā)者既羨慕它的成果,又擔心它對當前所從事的語言造成沖擊;另一方面,人們還是有JavaScript只能做前端腳本的定勢思維。究其原因,還是因為人們?nèi)狈v史觀層次上的認知,所以會產(chǎn)生一些莫須有的惴惴不安。
1995年,JavaScript隨網(wǎng)景公司發(fā)布的Netscape Navigator 2.0發(fā)布,它最早命名為LiveScript,隨后更名為JavaScript。它出自如今的Mozilla公司的CTO——Brendan Eich之手,其產(chǎn)生來源于網(wǎng)景公司發(fā)布的Netscape Navigator瀏覽器需要一種腳本語言來協(xié)助瀏覽器做一些簡單的動態(tài)操作。當時網(wǎng)景公司與Sun公司合作密切,不懂技術的管理層希望得到一個Java的腳本版語言,以期能像Java一樣風靡。Brendan Eich原本進入網(wǎng)景公司是希望做Scheme語言的開發(fā),但是卻接到了一個不喜歡的任務,但迫于當時形勢,不得不完成此事,于是JavaScript之父在10天的時間里倉促完成了JavaScript的設計,當時的項目代號是Mocha,名字叫LiveScript。
這門語言除了看起來像Java外,本質(zhì)與Java語言相去甚遠,管理層期望的Java Script其實借鑒了C、Scheme、Self、Java的設計。盡管倉促,但是這門語言還是借鑒了其他語言的不少優(yōu)點,如函數(shù)式、原型鏈繼承等。處于Java陰影下的這門語言獲得了它最終的名字:JavaScript。至今,仍然還有許多人分不清Java與JavaScript的關系,就像分不清雷鋒與雷峰塔一樣。
雖然JavaScript的產(chǎn)生與Netscape Navigator瀏覽器的需求有關系,但它并非只是設計出來用于瀏覽器前端的。早在1994年,網(wǎng)景公司就公布了其Netscape Enterprise Server中的一種服務器端腳本實現(xiàn),它的名字叫LiveWire,是最早的服務器端JavaScript,甚至早于瀏覽器中的JavaScript公布。對于這門圖靈完備的語言,網(wǎng)景早就開始嘗試將它用在后端。
隨后,微軟在第一次瀏覽器大戰(zhàn)時,于1996年發(fā)布的IE 3.0中也包含了它的腳本語言:JScript?;谏虡说脑?,它叫JScript,但是與JavaScript兼容。在1997年年初,微軟在它的服務器IIS 3.0中也包含了JScript,這就是我們在ASP中能使用的腳本語言。鑒于微軟處處與網(wǎng)景針鋒相對,出于保護自己的目的,網(wǎng)景公司推進了JavaScript的標準化進程,于1996年11月將JavaScript遞交給ECMA國際標準組織,在1997年7月公布了第一個版本,是為ECMA-262號標準,又稱ECMAScript。
可以看到,JavaScript一早就能運行在前后端,但風云變幻,在前后端各自的待遇卻不盡相同。伴隨著Java、PHP、.NET等服務器端技術的風靡,與前端瀏覽器中的JavaScript越來越重要相比,服務器端JavaScript逐漸式微。只剩下Rhino、SpiderMonkey用于工具。
然而,這個世界是變化的。第一次瀏覽器大戰(zhàn)落幕后的JavaScript的世界有些平靜,但依然在萌生一些變化。Google對Ajax的應用讓JavaScript變得越來越重要。Firefox的發(fā)布掀起了對IE的反攻,迎來了第二次瀏覽器大戰(zhàn),競爭令JavaScript的性能不斷提升,Chrome的加入令它高潮迭出。CommonJS規(guī)范的提出,不斷在完善JavaScript。ECMAScript標準的不斷推進,令語言更加精煉簡潔,不停地去蕪存菁。
瀏覽器端JavaScript在Web應用中盛行,甚至讓人們忘掉了JavaScript可以在服務器端運行這碼事。但是,服務器端JavaScript現(xiàn)在回來了,因為Node誕生了。Node的誕生離不開上述的歷史契機,服務器端JavaScript在漫長的歷史中長期停滯留下空白,但Node重新將這個領域激活。Ryan Dahl基于對高性能Web服務器的探索,無意間促成了服務器端JavaScript領域的煥然一新。Node憑借V8的高性能和異步I/O模型將JavaScript重新推向了一個高潮?,F(xiàn)在,Node不僅滿足JavaScript同時運行在前后端,而且性能還十分高效。與傳統(tǒng)印象中的不同,它甚至可比于當前的高效腳本語言。
奇妙的反應還在繼續(xù),前后端要跨語言開發(fā)的現(xiàn)狀已經(jīng)開始改變,因為語言堆棧的不同,開發(fā)者的分工也進行了細分:前端工程師和后端工程師。專業(yè)技能因為分工而精進,但也將技能變?yōu)閷@?,似乎前端工程師不能進行后端開發(fā),后端工程師搞不定前端開發(fā),猶如樹立的墻。但Node的出現(xiàn)令這種分工的界限又開始模糊了。同時一些后端工程師也關注到Node,他們甚至不關心前后端語言是否一致,而是赤裸裸地表示對Node高性能的垂涎,如實時、高并發(fā)等。
大量的前后端工程師加入了Node的開發(fā)陣營,GitHub上JavaScript是最活躍的開發(fā)語言,NPM社區(qū)第三方模塊恐怖的增長速度和下載量都昭示著這個過程不可逆,在這里吼一聲萬能的NPM,總能找到你需要的解決方案。很多不斷涌現(xiàn)的項目和創(chuàng)意都因為Node和前端開發(fā)能共用一種語言而獨特。換言之,Node的本意是提供一個高性能的面向網(wǎng)絡的執(zhí)行平臺,但無意間促成了JavaScript社區(qū)的繁榮,并進而形成強大的生態(tài)系統(tǒng)。
-
工程師
+關注
關注
59文章
1590瀏覽量
69506 -
前端
+關注
關注
1文章
214瀏覽量
18290
發(fā)布評論請先 登錄


硬件工程師看了只會找個角落默默哭泣#硬件工程師 #MDD #MDD辰達半導體 #產(chǎn)品經(jīng)理 #軟件工程師






不同時期的硬件工程師,最怕發(fā)生的事 #電子工程師 #硬件工程師 #內(nèi)容過于真實 #YXC晶振 #揚興科技





FPGA算法工程師、邏輯工程師、原型驗證工程師有什么區(qū)別?

評論