Node.js 不是一種獨立的語言,也不是一個 JavaScript 框架,是一個讓 JavaScript 運行在服務(wù)端的開發(fā)平臺,它讓 JavaScript 成為腳本語言世界的一等公民胧弛,在服務(wù)端堪與 PHP离咐、Python阶牍、Perl履肃、Ruby 平起平坐.Node.js 可以作為服務(wù)器向用戶提供服務(wù),與 PHP肖抱、Python柏卤、Ruby on Rails 相比,它跳過了 Apache撕攒、Nginx 等 HTTP服務(wù)器蒸苇,直接面向前端開發(fā).?
Node.js 是一個讓 JavaScript 運行在瀏覽器之外的平臺磷蛹。它實現(xiàn)了諸如文件系統(tǒng)、模塊溪烤、包味咳、操作系統(tǒng) API、網(wǎng)絡(luò)通信等 Core JavaScript 沒有或者不完善的功能檬嘀。歷史上將JavaScript移植到瀏覽器外的計劃不止一個槽驶,但Node.js 是最出色的一個。隨著 Node.js 的成功鸳兽,各種瀏覽器外的JavaScript 實現(xiàn)逐步興起掂铐,因此產(chǎn)生了 CommonJS 規(guī)范。CommonJS 試圖擬定一套完整的 JavaScript 規(guī)范揍异,以彌補普通應(yīng)用程序所需的 API全陨,譬如文件系統(tǒng)訪問、命令行衷掷、模塊管理辱姨、函數(shù)庫集成等功能。CommonJS 制定者希望眾多服務(wù)端 JavaScript 實現(xiàn)遵循CommonJS 規(guī)范戚嗅,以便相互兼容和代碼復用雨涛。Node.js 的部份實現(xiàn)遵循了CommonJS規(guī)范,但由于兩者還都處于誕生之初的快速變化期懦胞,也會有不一致的地方替久。Node.js 的 JavaScript 引擎是 V8,來自 Google Chrome 項目躏尉。V8 號稱是目前世界上最快的 JavaScript 引擎蚯根,經(jīng)歷了數(shù)次引擎革命,它的 JIT(Just-in-time Compilation胀糜,即時編譯)?執(zhí)行速度已經(jīng)快到了接近本地代碼的執(zhí)行速度稼锅。
nodejs特點
1.針對網(wǎng)絡(luò)應(yīng)用開發(fā)平臺2.基于Google的js運行時引擎V8 ?3.非阻塞異步I/O ???4.事件驅(qū)動 ?5.輕量、可伸縮 ?6.單線程
應(yīng)用:
1.Web服務(wù)器開發(fā) ?2.應(yīng)用服務(wù) ?3.網(wǎng)路爬蟲 ?4.開發(fā)腳手架工具 ?5.操作系統(tǒng)node-os
Node.js 最大的特點就是采用異步式 I/O 與事件驅(qū)動的架構(gòu)設(shè)計僚纷。對于高并發(fā)的解決方案,傳統(tǒng)的架構(gòu)是多線程模型拗盒,也就是為每個業(yè)務(wù)邏輯提供一個系統(tǒng)線程怖竭,通過系統(tǒng)線程切換來彌補同步式 I/O 調(diào)用時的時間開銷。Node.js 使用的是單線程模型陡蝇,對于所有 I/O 都采用異步式的請求方式痊臭,避免了頻繁的上下文切換哮肚。Node.js 在執(zhí)行的過程中會維護一個事件隊列,程序在執(zhí)行時進入事件循環(huán)等待下一個事件到來广匙,每個異步式 I/O請求完成后會被推送到事件隊列允趟,等待程序進程進行處理。