- 深入淺出Node.js
- 樸靈
- 858字
- 2020-05-06 16:52:10
1.3 Node給JavaScript帶來的意義
V8給Chrome瀏覽器帶來了一個強勁的心臟,使得它在瀏覽器大戰(zhàn)中脫穎而出,也使得Ryan Dahl在語言評估中為選擇JavaScript增加了一個極大的權(quán)重值。這里我們要談談Node給JavaScript帶來的一個新局面。鑒于Node之前那些不給力的后端JavaScript實現(xiàn),在性能和編程模型等方面沒能達到與其他語言一較高下的程度,這里先撇開不談,先談談Node與瀏覽器的對比。
Chrome瀏覽器和Node的組件構(gòu)成如圖1-1所示。我們知道瀏覽器中除了V8作為JavaScript引擎外,還有一個WebKit布局引擎。HTML5在發(fā)展過程中定義了更多更豐富的API。在實現(xiàn)上,瀏覽器提供了越來越多的功能暴露給JavaScript和HTML標簽。這個愿景美好,但對于前端瀏覽器的發(fā)展現(xiàn)狀而言,HTML5標準統(tǒng)一的過程是相對緩慢的。JavaScript作為一門圖靈完備的語言,長久以來卻限制在瀏覽器的沙箱中運行,它的能力取決于瀏覽器中間層提供的支持有多少。

圖1-1 Chrome瀏覽器和Node的組件構(gòu)成
除了HTML、WebKit和顯卡這些UI相關技術沒有支持外,Node的結(jié)構(gòu)與Chrome十分相似。它們都是基于事件驅(qū)動的異步架構(gòu),瀏覽器通過事件驅(qū)動來服務界面上的交互,Node通過事件驅(qū)動來服務I/O,這個細節(jié)將在第3章中詳述。在Node中,JavaScript可以隨心所欲地訪問本地文件,可以搭建WebSocket服務器端,可以連接數(shù)據(jù)庫,可以如Web Workers一樣玩轉(zhuǎn)多進程。如今,JavaScript可以運行在不同的地方,不再繼續(xù)限制在瀏覽器中與CSS樣式表、DOM樹打交道。如果HTTP協(xié)議棧是水平面,Node就是瀏覽器在協(xié)議棧另一邊的倒影。Node不處理UI,但用與瀏覽器相同的機制和原理運行。Node打破了過去JavaScript只能在瀏覽器中運行的局面。前后端編程環(huán)境統(tǒng)一,可以大大降低前后端轉(zhuǎn)換所需要的上下文交換代價。
對于前端工程師而言,自己所熟悉的JavaScript如今竟然可以在另一個地方放出異彩,不談其他原因,僅僅因為好奇,就值得去關注和探究它。
隨著Node的出現(xiàn),關于JavaScript的想象總是無限的。目前,社區(qū)已經(jīng)出現(xiàn)node-webkit這樣的項目,這個項目在2012年的滬JS會議上首次介紹給了公眾。如同上文提及的關于瀏覽器的優(yōu)勢和限制,在node-webkit項目中,它將Node中的事件循環(huán)和WebKit的事件循環(huán)融合在一起,既可以通過它享受HTML、CSS帶來的UI構(gòu)建,也能通過它訪問本地資源,將兩者的優(yōu)勢整合到一起。桌面應用程序的開發(fā)可以完全通過HTML、CSS、JavaScript完成。
- pcDuino開發(fā)實戰(zhàn)
- Linux實戰(zhàn)
- 高性能Linux服務器構(gòu)建實戰(zhàn):運維監(jiān)控、性能調(diào)優(yōu)與集群應用
- Implementing Azure DevOps Solutions
- Kali Linux 2018:Windows Penetration Testing
- Introduction to R for Quantitative Finance
- 從實踐中學習Windows滲透測試
- VMware vSphere 5.1 Cookbook
- 每天5分鐘玩轉(zhuǎn)Docker容器技術
- Serverless Architectures with Kubernetes
- Azure Serverless Computing Cookbook
- 分布式實時處理系統(tǒng):原理、架構(gòu)與實現(xiàn)
- Windows PE權(quán)威指南
- 微信小程序項目開發(fā)實戰(zhàn):用WePY、mpvue、Taro打造高效的小程序
- 操作系統(tǒng)教程