Node.js實戰(一)之概述
,
一、Node.js介紹
Node.js是一個Javascript執行環境(runtime environment),釋出於2009年5月,由Ryan Dahl開發,實質是對Chrome V8引擎進行了封裝。Node.js 不是一個 JavaScript 框架,不同於 CakePHP、 Django、 Rails。Node.js 更不是瀏覽器端的庫,不能與 jQuery、ExtJS 相提並論。Node.js 是一個讓 JavaScript 執行在 服務端的開發平臺,它讓 JavaScript 成為與 PHP、 Python、 Perl、 Ruby(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;