Node.js 不是一門語言,而是一個基於 V8 引擎的執行時環境,下圖是一張架構圖。
由圖可知,Node.js 底層除了 JavaScript 程式碼之外,還有大量的 C/C++ 程式碼。
常說 Node.js 是單執行緒的,但這個單執行緒是指處理 JavaScript 的主執行緒是單的,像 I/O 任務都是多執行緒處理的。
要開發 Node.js 應用,首先需要下載安裝 Node.js,點選下一步下一步就可完成。
值得一提的是,在官網中,還配套了一份 50 多篇的入門教學,每篇都不長,蠻通俗易懂的,可以閱讀一下。
然後需要一個編輯器,IDE編輯器(例如 VS Code、WebStream),或者是帶語言著色的文字編輯器(例如 CotEditor)都可以,看個人喜好。
寫完一個簡單的指令碼檔案後,觸發命令 node xx.js 就能執行了。
Node.js 在國內有個著名論壇 CNode,其中有許多優秀的 Node.js 資料可供參考。
目前的前端開發肯定會涉及到工程化,所以或多或少需要 Node.js 環境,用 npm 命令下載或管理包。
但是如果要開發實際應用,那麼就得需要了解 Node.js 的模組。
Node.js 賦予了 JavaScript 很多沒有的能力,例如讀寫檔案、發起跨域的網路請求、連線資料庫等。
前端邊界因 Node.js 變得很廣,一個前端也可以做後端的工作,俗稱全棧工程師。
在閱讀 Node.js 的官方檔案時,就會發現內容很詳盡,很多細節都會講到。
只是沒有上下文語境,缺乏代入感,有時候檔案讀起來就比較晦澀。
進入到官方檔案後,在左邊的選單欄中有 60 多個選項,直接讀的話,會讓人睡著。
一般的話,可以配合其他教學,然後將官方檔案作為參考資料,當遇到不太明白的地方,再有針對性的瀏覽,效果會更佳。
本文推薦幾個常用的模組,包括 fs檔案模組、http協定模組、path路徑模組、global全域性變數和 module模組化。
日常專案開發中肯定會涉及到上述一個或多個模組。
真正專案開發時,很少需要從零開始,選擇成熟的框架主要就是為了提升工作效率。
市面上的框架有很多,例如 Express、KOA、egg.js、Next.js、Nuxt.js 等,這些框架都有對應的中文檔案。
以我公司為例,選擇的是 KOA 框架,這是一個短小精悍的框架,原始碼只有 4 個檔案。
雖然簡單,但擴充套件性很高,可以通過中介軟體的形式載入進來,例如路由、紀錄檔、許可權驗證、JWT認證等。
在將開發環境搭建好後,還得佈置單元測試,框架都能整合單元測試,只要簡單的設定即可。
在 Node.js 中,有很多單測框架可供選擇,例如 Mocha、Jest 等,斷言庫包括 Chai、assert 斷言模組等。
介面測試有 SuperTest,測試替身庫有 Sinon,可以模擬資料庫讀記錄。
開發 Node.js 的專案,離不開資料庫的處理。常用的資料庫有 MySQL 和 MongoDB。
MySQL 官方給出的視覺化操作工具是 Workbench,MongoDB 官方給出的視覺化操作工具是 Compass。
直接用 Node.js 作為專案持久層的並不多,很多時候都是作為資料中間層的角色存在。
因此,對資料庫的處理並不是很複雜,常用的也就是增刪改查,其中刪除很少是物理刪除,基本都是改個狀態。
以 MySQL 為例,常用的就是下面三類 SQL 語句。
select * from table where id = 1; update table set name = 'strick' where id = 1; insert into table(name) values ('strick');
當然,在日常開發中不需要手寫拼接 SQL 語句,既為了安全,也是為了可維護。
所以就需要常用的 ORM(物件關係對映),例如 MySQL 的 Sequelize,MongoDB 的 mongoose。
至此,開發一個常規 Node.js 應用所需的知識儲備,已全部涉及到,接下來就是熟能生巧的過程了。