最近接了一個node項目,雖然最後順利完成了,可是因爲第一次實戰,整個過程是趕出來的,許多地方只知其一;不知其二。如今項目結束了,就靜下心來系統地學一學,理一理,讀書不忘拿筆,既然讀書了,固然就要記點東西。一方面:能幫助本身加深印象,更好的理解,另外一方面:能有幸幫助到別人也是不甚歡喜的。本人大部分的學習內容來自於如下書籍。javascript
Node.js不是JS應用、而是JS運行平臺 --《深刻淺出Node.js》java
Node.js採用C++語言編寫而成,是一個後端的Javascript的運行環境。它使用了Google的V8虛擬機(Google的Chrome瀏覽器使用的 JavaScript執行環境),來解釋和執行JavaScript代碼。node
基於事件驅動的異步I/O(非阻塞)git
線程在執行中若是遇到磁盤讀寫或網絡通訊(統稱爲 I/O 操做), 一般要耗費較長的時間,這時操做系統會剝奪這個線程的 CPU 控制權,使其暫停執行,同時將資源讓給其餘的工做線程,這種線程調度方式稱爲阻塞。github
Node.js的設計思想中以事件驅動爲核心的異步I/O(非阻塞)。全部的磁盤 I/O、網絡通訊、數據庫查詢都以非阻塞的方式請求,返回的結果由事件循環來處理數據庫
Node.js 在執行的過程當中會維護一個事件隊列,程序在執行時進入事件循環等待下一個事件到來,每一個異步式 I/O 請求完成後會被推送到事件隊列,等待程序進程進行處理。npm
支持的編程語言是javascript
Javascript的匿名函數和閉包特性很是適合事件驅動、異步編程。同時Javascript在動態語言中性能較好,再加上V8引擎也是同類的佼佼者,因此Node.js的性能也受益其中。編程
Node.js的安裝方法很簡單,直接上官網或者百度一個選擇相應版本下載安裝就行,就很少說了。安裝完後能夠經過輸入 "node -v" 來測試是否成功安裝。windows
tips: 工做中可能會須要多個node版本之間的相互切換,推薦使用nvm工具(but,暫不支持windows)後端
Nodejs自身提供了基本的模塊。可是在這些基本模塊上開發實際應用須要較多的工做,npm的存在解決了該問題,它是Nodejs的包管理器:
新版的nodejs已經集成了npm,因此不須要再進行安裝操做。一樣能夠經過輸入 "npm -v" 來測試是否成功安裝。
至此,咱們的node開發環境就基本搭建完成了,咱們來開始實現第一個 Node.js 程序。打開你經常使用的文本編輯器,在其中輸入:
console.log('Hello World');
將文件保存爲 helloworld.js,打開終端,進入 helloworld.js 所在的目錄,執行如下命令:
node helloworld.js
若是一切正常,你將會在終端中看到輸出 Hello World
。