本篇內容主要講解“Node.js的相關問題有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Node.js的相關問題有哪些”吧!
固鎮(zhèn)ssl適用于網站、小程序/APP、API接口等需要進行數據傳輸應用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
1. Node誕生于哪一年?
Node誕生2009
年
2009年3月,Node的作者在其博客上宣布準備基于V8創(chuàng)建一個輕量級的Web服務器并提供一套庫
同年5月,在GitHub發(fā)布最初的版本
2011年7月,在微軟的支持下發(fā)布了windows版本
2. 是誰創(chuàng)造出來的?
Ryan Dahl
是Node的創(chuàng)造者,被稱為Node之父
但在2012年1月,Ryan Dahl將掌門人身份轉交給Isaac Z.Schlueter,由他接受Node的版本發(fā)布及bug修復等工作,Isaac Z.Schlueter也是后來NPM的作者
3. 為什么叫Node?
Node有很多別稱,比如Nodejs、NodeJS、Node.js等,那為什么是Node呢?
起初,Ryan Dahl稱他的項目為web.js,就是一個web服務器,但是項目的發(fā)展超出了他最初單純開發(fā)一個web服務器的設想。變成了一個構建網絡應用的基礎框架,可以在它的基礎上構建更多的東西,如服務器、客戶端、命令行工具等等。Node發(fā)展為一個強制不共享任何資源的單線程、單進程系統,包含是適宜網絡的庫,為構建大型分布式應用程序提供基礎設施,其目標也稱為一個構建快速、可伸縮的網絡應用服務。它自身非常簡單,通過通信協議來組織許多Node,非常容易通過擴展來達成構建大型網絡應用的目的。每一個Node進程都構成了這個網絡應用中的一個節(jié)點,這正是Node的含義
4. 為什么是JavaScript成為了Node的實現語言?
選擇JavaScript作為Node的實現語言的主要原因有3個:
高性能
符合事件驅動
沒有歷史包袱
Ryan Dahl曾經評估過C、Lua、Haskell、Ruby等作為備選實現,但是C開發(fā)門檻高,Lua有很多的歷史包袱,Haskell又覺得自己還玩不轉,而Ruby的虛擬機的性能又不太好。綜合之下選擇了JavaScript作為Node的實現語言
你可能會跟我一樣想,JavaScript就沒有歷史包袱嗎?是的,JavaScript在后端一直沒有市場,歷史包袱相當于零
5. Node有哪些主要特點?
主要有以下特點:
異步I/O
事件和回調函數
單線程
Node保留了前端瀏覽器JavaScript中的那些熟悉的接口,沒有改寫語言本身的任何特性
6. Node有哪些應用場景?
Node的應用場景主要有以下幾種:
CPU密集型
CPU密集型業(yè)務
分布式應用
Node利用事件循環(huán)的處理能力,不需要為每一個請求啟動一個線程,從而更有效的組織起更多的硬件資源;對于偏重CPU棧操作的業(yè)務,Node的表現也是足夠高效的,主要原因是V8的深度性能優(yōu)化
7. CPU密集型應用會給Node帶來什么挑戰(zhàn),如何解決?
CPU密集型應用會給Node帶來的主要挑戰(zhàn)是:由于JavaScript單線程,如果長時間計算(如大的循環(huán)),將會導致CPU時間片不能釋放,使得后續(xù)I/O無法發(fā)起
通常方案:
適當調整和分解大型運算任務
如果上述方案無法解決,Node還有兩種方法來充分利用CPU
Node可以編寫C/C++擴展
通過子進程的方式,將一部分Node進程當做常駐服務進程用于計算,然后利用進程間的消息來傳遞結果,將計算與I/O分離
到此,相信大家對“Node.js的相關問題有哪些”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!