Node.js實戰(一)之概述

html

1、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引擎進行代碼解釋;node

(3)事件驅動;web

(4)非阻塞I/O;編程

(5)輕量、可伸縮,適於實時數據交互應用;windows

(6)單進程,單線程;瀏覽器

 
2、安裝
 
安裝地址爲:https://nodejs.org/en/download/
 
根據不一樣系統能夠選擇對應的版本,以下圖所示:

 

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

 

 

3、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

 

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

 
4、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;

相關文章
相關標籤/搜索