NodeJS基礎
小結
本章介紹了有關NodeJS的基本概念和使用方法,總結起來有以下知識點:
-
NodeJS是一個JS腳本解析器,任何操作系統下安裝NodeJS本質上做的事情都是把NodeJS執行程序復制到一個目錄,然后保證這個目錄在系統PATH環境變量下,以便終端下可以使用
node
命令。 -
終端下直接輸入
node
命令可進入命令交互模式,很適合用來測試一些JS代碼片段,比如正則表達式。 -
NodeJS使用CMD模塊系統,主模塊作為程序入口點,所有模塊在執行過程中只初始化一次。
-
除非JS模塊不能滿足需求,否則不要輕易使用二進制模塊,否則你的用戶會叫苦連天。
代碼的組織和部署
小結
本章介紹了使用NodeJS編寫代碼前需要做的准備工作,總結起來有以下幾點:
-
編寫代碼前先規划好目錄結構,才能做到有條不紊。
-
稍大些的程序可以將代碼拆分為多個模塊管理,更大些的程序可以使用包來組織模塊。
-
合理使用
node_modules
和NODE_PATH
來解耦包的使用方式和物理路徑。 -
使用NPM加入NodeJS生態圈互通有無。
-
想到了心儀的包名時請提前在NPM上搶注。
文件操作
小結
本章介紹了使用NodeJS操作文件時需要的API以及一些技巧,總結起來有以下幾點:
-
學好文件操作,編寫各種程序都不怕。
-
如果不是很在意性能,
fs
模塊的同步API能讓生活更加美好。 -
需要對文件讀寫做到字節級別的精細控制時,請使用
fs
模塊的文件底層操作API。 -
不要使用拼接字符串的方式來處理路徑,使用
path
模塊。 -
掌握好目錄遍歷和文件編碼處理技巧,很實用。
網絡操作
小結
本章介紹了使用NodeJS操作網絡時需要的API以及一些坑回避技巧,總結起來有以下幾點:
-
http
和https
模塊支持服務端模式和客戶端模式兩種使用方式。 -
request
和response
對象除了用於讀寫頭數據外,都可以當作數據流來操作。 -
url.parse
方法加上request.url
屬性是處理HTTP請求時的固定搭配。 -
使用
zlib
模塊可以減少使用HTTP協議時的數據傳輸量。 -
通過
net
模塊的Socket服務器與客戶端可對HTTP協議做底層操作。 -
小心踩坑。
進程管理
小結
本章介紹了使用NodeJS管理進程時需要的API以及主要的應用場景,總結起來有以下幾點:
-
使用
process
對象管理自身。 -
使用
child_process
模塊創建和管理子進程。
異步編程
小結
本章介紹了JS異步編程相關的知識,總結起來有以下幾點:
-
不掌握異步編程就不算學會NodeJS。
-
異步編程依托於回調來實現,而使用回調不一定就是異步編程。
-
異步編程下的函數間數據傳遞、數組遍歷和異常處理與同步編程有很大差別。
-
使用
domain
模塊簡化異步代碼的異常處理,並小心陷阱。
大示例
小結
本章將之前零散介紹的知識點串了起來,完整地演示了一個使用NodeJS開發程序的例子,至此我們的課程就全部結束了。以下是對新誕生的NodeJSer的一些建議。
-
要熟悉官方API文檔。並不是說要熟悉到能記住每個API的名稱和用法,而是要熟悉NodeJS提供了哪些功能,一旦需要時知道查詢API文檔的哪塊地方。
-
要先設計再實現。在開發一個程序前首先要有一個全局的設計,不一定要很周全,但要足夠能寫出一些代碼。
-
要實現后再設計。在寫了一些代碼,有了一些具體的東西后,一定會發現一些之前忽略掉的細節。這時再反過來改進之前的設計,為第二輪迭代做准備。
-
要充分利用三方包。NodeJS有一個龐大的生態圈,在寫代碼之前先看看有沒有現成的三方包能節省不少時間。
-
不要迷信三方包。任何事情做過頭了就不好了,三方包也是一樣。三方包是一個黑盒,每多使用一個三方包,就為程序增加了一份潛在風險。並且三方包很難恰好只提供程序需要的功能,每多使用一個三方包,就讓程序更加臃腫一些。因此在決定使用某個三方包之前,最好三思而后行。