Node概念詳解
1 程式語言的能力取決於什麼
語言本身只提供定義變數 定義函式,定義型別,流程控制,迴圈結構之類的操作
取決於執行該語言的平臺(環境)
對於js來說,我們常說的js實際是ES,大部分能力都是有瀏覽器的執行引擎決定的
BOM和DOM可以說是瀏覽器開放出來的介面
javascript能執行在哪取決於 這個環境有沒有特定的平臺
node.js是一個基於ChromeV8引擎的javascript執行環境。
node.js使用了一個事件驅動、 非阻塞式I/O的模型,使其輕量又高效
Node就是Javascript語言在伺服器端的執行環境
執行平臺有兩層意思
1 首先 js語言通過Node在伺服器執行 在這個意思上 Node有點像javascript虛擬機器
Node提供大量的工具庫,使得javascript語言與作業系統互動
2 Node又是javascript的工具庫
Node選擇了javascript 不是javascript發展出來了一個node,
Node可以用來開發服務端應用程式,Web系統。分發資料請求 渲染HTML
阻塞
使用者不操作就會一直阻塞停頓
上一行程式碼不執行完 下一行程式碼無法執行
非阻塞的優勢
提高程式碼的效率
充分利用單核CPU的優勢
改善I/O的不可預測帶來的問題
Node採用的Chrome V8引擎處理javascript指令碼
V8最大的特點就是單執行緒執行,一次只能執行一個任務
Node大量採用大量非同步操作
即不是馬上執行 而是插在任務佇列的尾部 等到前面的任務執行完成後再執行
這樣就提高了程式碼的響應能力
不知道使用者什麼時候操作互動
當代碼需要等待一個無狀態的時候 就需要非同步
程序
執行緒
I/O
Node所有的會發生阻塞的操作都是非同步的
I/O 可以理解為從輸入到輸出之間的轉化過程
Node中的非同步I/O
因為Node的操作大多數都是非同步,無法通過try catch捕獲異常
所以錯誤優先的回撥函式 第一個引數為上一步的錯誤資訊
非同步回撥的問題
相比較於傳統的程式碼
1.非同步事件驅動的程式碼不容易閱讀 2. 非同步事件驅動的程式碼不容易閱讀 3 不容易調式 4不容易維護
node內部的操作