日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Node.js

 春和秋榮 2019-06-24

從本章開始,我們就正式開啟JavaScript的后端開發(fā)之旅。

Node.js是目前非?;馃岬募夹g(shù),但是它的誕生經(jīng)歷卻很奇特。

眾所周知,在Netscape設計出JavaScript后的短短幾個月,JavaScript事實上已經(jīng)是前端開發(fā)的唯一標準。

后來,微軟通過IE擊敗了Netscape后一統(tǒng)桌面,結(jié)果幾年時間,瀏覽器毫無進步。(2001年推出的古老的IE 6到今天仍然有人在使用!)

沒有競爭就沒有發(fā)展。微軟認為IE6瀏覽器已經(jīng)非常完善,幾乎沒有可改進之處,然后解散了IE6開發(fā)團隊!而Google卻認為支持現(xiàn)代Web應用的新一代瀏覽器才剛剛起步,尤其是瀏覽器負責運行JavaScript的引擎性能還可提升10倍。

先是Mozilla借助已壯烈犧牲的Netscape遺產(chǎn)在2002年推出了Firefox瀏覽器,緊接著Apple于2003年在開源的KHTML瀏覽器的基礎上推出了WebKit內(nèi)核的Safari瀏覽器,不過僅限于Mac平臺。

隨后,Google也開始創(chuàng)建自家的瀏覽器。他們也看中了WebKit內(nèi)核,于是基于WebKit內(nèi)核推出了Chrome瀏覽器。

Chrome瀏覽器是跨Windows和Mac平臺的,并且,Google認為要運行現(xiàn)代Web應用,瀏覽器必須有一個性能非常強勁的JavaScript引擎,于是Google自己開發(fā)了一個高性能JavaScript引擎,名字叫V8,以BSD許可證開源。

現(xiàn)代瀏覽器大戰(zhàn)讓微軟的IE瀏覽器遠遠地落后了,因為他們解散了最有經(jīng)驗、戰(zhàn)斗力最強的瀏覽器團隊!回過頭再追趕卻發(fā)現(xiàn),支持HTML5的WebKit已經(jīng)成為手機端的標準了,IE瀏覽器從此與主流移動端設備絕緣。

瀏覽器大戰(zhàn)和Node有何關(guān)系?

話說有個叫Ryan Dahl的歪果仁,他的工作是用C/C++寫高性能Web服務。對于高性能,異步IO、事件驅(qū)動是基本原則,但是用C/C++寫就太痛苦了。于是這位仁兄開始設想用高級語言開發(fā)Web服務。他評估了很多種高級語言,發(fā)現(xiàn)很多語言雖然同時提供了同步IO和異步IO,但是開發(fā)人員一旦用了同步IO,他們就再也懶得寫異步IO了,所以,最終,Ryan瞄向了JavaScript。

因為JavaScript是單線程執(zhí)行,根本不能進行同步IO操作,所以,JavaScript的這一“缺陷”導致了它只能使用異步IO。

選定了開發(fā)語言,還要有運行時引擎。這位仁兄曾考慮過自己寫一個,不過明智地放棄了,因為V8就是開源的JavaScript引擎。讓Google投資去優(yōu)化V8,咱只負責改造一下拿來用,還不用付錢,這個買賣很劃算。

于是在2009年,Ryan正式推出了基于JavaScript語言和V8引擎的開源Web服務器項目,命名為Node.js。雖然名字很土,但是,Node第一次把JavaScript帶入到后端服務器開發(fā),加上世界上已經(jīng)有無數(shù)的JavaScript開發(fā)人員,所以Node一下子就火了起來。

在Node上運行的JavaScript相比其他后端開發(fā)語言有何優(yōu)勢?

最大的優(yōu)勢是借助JavaScript天生的事件驅(qū)動機制加V8高性能引擎,使編寫高性能Web服務輕而易舉。

其次,JavaScript語言本身是完善的函數(shù)式語言,在前端開發(fā)時,開發(fā)人員往往寫得比較隨意,讓人感覺JavaScript就是個“玩具語言”。但是,在Node環(huán)境下,通過模塊化的JavaScript代碼,加上函數(shù)式編程,并且無需考慮瀏覽器兼容性問題,直接使用最新的ECMAScript 6標準,可以完全滿足工程上的需求。

我還聽說過io.js,這又是什么鬼?

因為Node.js是開源項目,雖然由社區(qū)推動,但幕后一直由Joyent公司資助。由于一群開發(fā)者對Joyent公司的策略不滿,于2014年從Node.js項目fork出了io.js項目,決定單獨發(fā)展,但兩者實際上是兼容的。

然而中國有句古話,叫做“分久必合,合久必分”。分家后沒多久,Joyent公司表示要和解,于是,io.js項目又決定回歸Node.js。

具體做法是將來io.js將首先添加新的特性,如果大家測試用得爽,就把新特性加入Node.js。io.js是“嘗鮮版”,而Node.js是線上穩(wěn)定版,相當于Fedora Linux和RHEL的關(guān)系。

本章教程的所有代碼都在Node.js上調(diào)試通過。如果你要嘗試io.js也是可以的,不過兩者如果遇到一些區(qū)別請自行查看io.js的文檔。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多