《Node 實戰(第2版)》讀書筆記(1、初識Node)

何爲 Node?

Node.js 是一個 JavaScript 運行平臺,其顯著特徵是它的異步和事件驅動機制,以及小巧精悍的標準庫。node

Node 簡介

image.png

Node 特色

Node 和 JavaScript 的優點之一是它們的單線程模型。這樣代碼控制邏輯很清晰、明瞭。可是 Node 採用了事件輪詢、異步API、非阻塞 I/O三種技術來解決單線程阻塞(等待的問題)。

Node 與 V8

Node 的動力源自 V8 JavaScript 引擎,是由服務於 Google Chrome 的 Chromium 項目組開發的。 V8 的一個值得稱道的特性是它會被 JavaScript 直接編譯爲機器碼,另外它還有一些代碼優化特性,因此 Node 才能這麼快。Node 的另外一個本地部件 libuv,它是負責 處理 I/O 的。V8 負責 JavaScript 代碼的解釋和執行。用 C++綁定層可將 libuv 和 V8 結合起來。 如圖:
image.pnglinux

V8 會爲 Node 提供一些額外的特性支持,查看 Node 特性支持能夠經過一下代碼查看(linux、macOS):npm

node --v8-options | grep "in progress"

安裝 Node 很簡單,去官網或者使用一些包管理工具均可以快速的安裝 Node 程序。目前支持大部分操做系統,也能夠經過源碼進行安裝。編程

Node 自帶的工具

Node 自帶了一個包管理工具(npm)也是命令行工具,能夠用來安裝應用所需依賴或者發佈本身的工具包,還提供了一些核心模塊,好比:文件系統、網絡、調試器等,賦予 JavaScript 讀寫磁盤、訪問 Http,以及在命令行單步調試程序的能力。bash

目前主流的 Node 程序有三種

  • Web 應用程序,由於 Node 是服務器端的 JavaScript平臺,因此 Web 應用程序是最多見的了。
  • 命令行工具和後臺程序
  • 桌面程序(Electron)

Node 編程基礎

image.png
Node 經過 require(*) 來引入模塊,經過 exports 和 module.exports 來導出模塊。根據須要將功能經過 exports 或 module.exports 組織成模塊,能夠規避程序腳本一直增加所產生的弊端。
Node 能夠經過 node_modules 重用模塊,搜索規則以下:
image.png服務器

使用異步編程技術

由於 Node 是單線程的,因此,開發編程中會遇到大量的異步編程技術,在 Node 中流行的響應邏輯管理方式有兩種:回調、事件監聽(eg:EventEmitter)。其中回調(callback)用來最爲頻繁(因此好多祖傳代碼各類嵌套,好在 Node 開發中開發了大量的優秀工具來優化異步回調,ES 2015 的一些新特性也支持將異步邏輯以同步化的編程方式展示,用來規避大量祖傳回調嵌套的問題(eg: genorator、aysnc、Promise 等)。
異步開發中,時常會有執行順序而致使邏輯或者代碼執行不符合預期,能夠經過一些技術手段去規避(緣由是 js 中沒有塊級做用域致使的,現有的 let、const 變量聲明關鍵字必定程序上規避了這個問題,經過將變量提高到暫時性死區)。
異步邏輯順序華主要有兩種方式:串行和並行,目前 Node 社區有比較好的流程控制工具,諸如:Async、Step、Seq 等等。網絡

相關文章
相關標籤/搜索