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