好程序員web前端學習路線nodeJs學習過程之認識nodejs,nodeJs只是據說過,沒見過,沒玩過。重新手開始,我想慢慢掌握它。javascript
來源於node官網與網絡:php
Node.js 是一個基於 Chrome V8 引擎的 JavaScript 運行環境。
Node.js 使用了一個事件驅動、非阻塞式 I/O 的模型,使其輕量又高效。html
Node.js是一套用來編寫高性能網絡服務器的JavaScript工具包,一系列的變化由此開始。比較獨特的是,Node.js會假設在POSIX環境下運行Linux 或 Mac OS X。
若是是在Windows下,那就須要安裝MinGW以得到一個仿POSIX的環境。在Node中,Http是首要的。Node爲建立http服務器做了優化,因此在網上看到的大部分示例和庫都是集中在web上(http框架、模板庫等)。前端
作些什麼呢java
1. 用於web服務器端;node
2. javascript工具包;程序員
3. 和http有着密切的關係。
4. 快速構建網絡服務及應用;web
5. 封裝谷歌v8引擎。瀏覽器
nodeJs究竟是什麼呢,它是服務器端js運行平臺,是一個javascript的運行環境和庫。能夠編寫後臺系統或者服務器端的Javascript代碼,交給 Node.js來解釋執行。就像html遇到php會由php來解釋,jsp由jvm解釋執行同樣。服務器
他還有不少的特性就不一一舉例了。Nodejs做爲後起之秀的後臺,也有不少吸引人的地方:單線程、V8虛擬機、事件驅動、非阻塞IO;nodejs能夠不新增額外線程的狀況下,依然能夠對任務進行並處理 --node是單線程的。它是經過事件輪詢來實行操做的,對此咱們能夠充分的利用這一點,儘量的避免阻塞,取而代之。
那nodejs是作什麼的?服務端相似於Java,web應用等;
舉個例子:
var http = require('http');
server = http.createServer(function (req, res) {
res.writeHeader(200, {"Content-Type": "text/plain"});
res.end("Hello");
})
server.listen(8000);
console.log("httpd start @8000");
確保nodejs環境安裝成功,對此編譯執行經過,在瀏覽器地址欄輸入localhost:8000,能夠看到輸出。
nodeJS的優缺點
優勢:1. 高併發
2. 適合I/O密集型應用
缺點:1. 不適合CPU密集型應用;因爲JavaScript單線程的緣由,若是有長時間運行的計算(好比大循環),將會致使CPU時間片不能釋放,使得後續I/O沒法發起;
解決方案:分解大型運算任務爲多個小任務,使得運算可以適時釋放,不阻塞I/O調用的發起;
2. 只支持單核CPU,不能充分利用CPU
3. 可靠性低,一旦代碼某個環節崩潰,整個系統都崩潰
緣由:單進程,單線程
解決方案:(1)Nnigx反向代理,負載均衡,開多個進程,綁定多個端口;
(2)開多個進程監聽同一個端口,使用cluster模塊;
4. 開源組件庫質量良莠不齊,更新快,向下不兼容
5. Debug不方便,錯誤沒有stack trace