1. 程式人生 > >Node.js實戰(一)之概述

Node.js實戰(一)之概述

一、Node.js介紹

Node.js是一個Javascript執行環境(runtime environment),釋出於2009年5月,由Ryan Dahl開發,實質是對Chrome V8引擎進行了封裝。Node.js 不是一個 JavaScript 框架,不同於 CakePHPDjangoRails。Node.js 更不是瀏覽器端的庫,不能與 jQuery、ExtJS 相提並論。Node.js 是一個讓 JavaScript 執行在 服務端的開發平臺,它讓 JavaScript 成為與 PHPPythonPerlRuby
等服務端語言平起平坐的 指令碼語言 [1]   Node.js對一些特殊用例進行優化,提供替代的 API,使得V8在非瀏覽器環境下執行得更好。V8引擎執行Javascript的速度非常快,效能非常好。 [2]   Node.js是一個基於Chrome JavaScript執行時建立的平臺, 用於方便地搭建響應速度快、易於擴充套件的網路應用。Node.js 使用 事件驅動, 非阻塞 I/O 模型而得以輕量和高效,非常適合在分散式裝置上執行資料密集型的實時應用(引用百度百科介紹)。   Node.js官網:https://nodejs.org/en/ Node.js文件地址:https://nodejs.org/en/docs/   通過上面的介紹我們可以將Node.js的特點歸納為這麼幾個?   (1)它是一個Javascript執行環境;

(2)依賴於Chrome V8引擎進行程式碼解釋;

(3)事件驅動;

(4)非阻塞I/O;

(5)輕量、可伸縮,適於實時資料互動應用;

(6)單程序,單執行緒;

  二、安裝   安裝地址為:https://nodejs.org/en/download/   根據不同系統可以選擇對應的版本,如下圖所示:

 

windows的安裝很簡單,幾乎是一鍵安裝下一步下一步這樣的,至於Linux的話,以Ubuntu16.04為例,sudo apt-get install nodejs和 sudo apt-get install nodejs-legacy輸入這兩條命令即可安裝成功。

 

 

三、Node.js的應用場景

參考該篇博文:https://www.cnblogs.com/gassnake999/p/7044583.html

應用場景一共15個,如下所示:

(1) Web開發:Express + EJS + Mongoose/MySQL;

(2) REST開發:Restify;

(3)Web聊天室(IM):Express + Socket.io;

(4) Web爬蟲:Cheerio/Request;

(5)Web部落格:Hexo;

(6)Web論壇: nodeclub;

(7)Web幻燈片:Cleaver

(8)前端包管理平臺: bower.js

(9)OAuth認證:Passport

(10)定時任務工具: later

(11)瀏覽器環境工具: browserify;

(12)命令列程式設計工具:Commander

(13) Web控制檯工具: tty.js;

(14)客戶端應用工具: node-webkit

(15)作業系統: node-os

 

其實還有更多隻不過本文並沒有列舉出來,總而言之,只有想不到沒有做不到。

  四、Node.js的優缺點   主要參考:https://www.cnblogs.com/lsgxeva/p/7993271.html

優點:

(1)高併發(最重要的優點);

(2)適合I/O密集型應用;

缺點:

(1)不適合CPU密集型應用,CPU密集型應用給Node帶來的挑戰主要是:由於JavaScript單執行緒的原因,如果有長時間執行的計算(比如大迴圈),將會導致CPU時間片不能釋放,使得後續I/O無法發起;

解決方案:分解大型運算任務為多個小任務,使得運算能夠適時釋放,不阻塞I/O呼叫的發起;

(2)只支援單核CPU,不能充分利用CPU;

(3)可靠性低,一旦程式碼某個環節崩潰,整個系統都崩潰;

原因:單程序,單執行緒

解決方案:

a.Nnigx反向代理,負載均衡,開多個程序,繫結多個埠;

b.開多個程序監聽同一個埠,使用cluster模組;

(4)開源元件庫質量參差不齊,更新快,向下不相容;

(5)Debug不方便,錯誤沒有stack trace;