Nodejs入門(一)

宣火魚竹發表於2018-08-31

一、Nodejs介紹

1、nodejs是ecmascript的runtime

2、nodejs使用了event-driven(事件驅動)non-blocking I/O model(無阻塞的io模型)

  • 非阻塞:I/O時函式立即返回,程式不等I/O完成
  • event-driven:Nodejs靠事件進行驅動

3、cpu密集 vs I/O密集

  • cpu密集:壓縮、解壓、加密、解密
  • I/O密集:檔案操作、網路操作、資料庫

因為JS操作是I/O密集,所以Nodejs是JS在serves上面的runtime

4、高併發應對之道

  • 增加機器數
  • 增加每臺機器的cpu數

5、Nodejs單執行緒

  • 單執行緒只針對主程式,I/O作業系統底層多執行緒排程(Nodejs自己是單執行緒,但它有一部分任務交給作業系統自己去做多執行緒)
  • 單執行緒不是單程式

6、Nodejs應用場景

  • Web Server
  • 原生程式碼構建(編譯之類)

二、Nodejs開發環境與除錯工具

1、環境

  • CommonJS 規範
  • global 物件(類似於js裡面的window物件)
  • process 當前執行的程式

2、CommonJS規範

  • 每個檔案都是一個模組,都有自己的作用域
  • 在模組內部module變數代表模組本身
  • module.exports屬性代表模組對外介面(將模組的一些東西輸出)
  • require規則
    • / 表示絕對路徑,. / 表示相對於當前檔案的
    • 支援js、json、node的擴充名
  • require特性
    • module被載入的時候會執行一遍,並進行快取,第二次直接用快取裡面的結果
    • 當一個模組被迴圈載入(a依賴b,然後b又依賴a),那麼只會輸出已經執行的部分(a執行在b依賴a之前a該執行的部分)

3、global全域性物件

  • CommonJS
  • Buffer、process、console
  • timer

相關文章