nodejs適合做的項目:1、“I/O”密集型應用;2、中間層;3、RPC服務;4、基礎工具,例編譯器、構建工具、搭建腳手架等;5、論壇社區(qū)系統(tǒng);6、BFF應用;7、Serverless;8、微服務等等。
本教程操作環(huán)境:windows7系統(tǒng)、nodejs 12.19.0版,DELL G3電腦。
Node.js 適用于什么
I/O 密集型應用
Node.js 的優(yōu)勢主要在于事件循環(huán),非阻塞異步 I/O,只開一個線程,不會每個請求過來我都去創(chuàng)建一個線程,從而產生資源開銷。
ResutFul API
通常我們可以使用 Node.js 來做為中間層,負責組裝數(shù)據(jù)提供 API 接口給到前端調用,這些數(shù)據(jù)源可能來自第三方接口或者數(shù)據(jù)庫,例如,以前可能我們通過后端 Java、PHP 等其它語言來做,現(xiàn)在我們前端工程師通過 Node.js 即可完成,后端則可以更專注于業(yè)務開發(fā)。
既然提到了 ResultFul API,順便推薦一個去哪兒開源的 API 管理工具 YAPI:https://github.com/YMFE/yapi 使用的 Node.js 進行開發(fā)的(聲明下這里不是打廣告,只是這個用起來真的很贊!忍不住向給大家推薦?。?。
RPC 服務
RPC(Remote Procedure Call)中文名「遠程過程調用」,也許你對它很陌生,但是在當今微服務模式下,我們可能是針對功能或者具體的業(yè)務形態(tài)進行服務化,那么服務之間的通信一種常見的模式我們都知道通過 HTTP 來實現(xiàn),了解網絡模型的同學可能知道,如果我們現(xiàn)在通過 TCP 的方式是不是會更高效呢?
當然是的,HTTP 屬于應用層協(xié)議,在這之下就是傳輸層,顯然以 TCP 形式是很有優(yōu)勢的,RPC 服務也就是采用的 TCP,現(xiàn)在出名的 RPC 服務例如,Google 的 gRPC、阿里的 Dubbo。
基礎工具
可以做為基礎工具,前端領域中的編譯器、構建工具、搭建腳手架等。比較出名的例如 Webpack、Gulp 都是很成功的。
論壇社區(qū)
Nodeclub 是使用 Node.js 和 MongoDB 開發(fā)的社區(qū)系統(tǒng),界面優(yōu)雅,功能豐富,小巧迅速,可以用它搭建自己的社區(qū)。Cnode 社區(qū)就是一個成功的例子,Cnode 地址:https://cnodejs.org/
https://github.com/cnodejs/nodeclub
Backend For Frontend
Backend For Frontend,簡稱 BFF,服務于前端的后端,并非是一種新技術只是一種邏輯上的分層,在這一層我們可以做一些資源的整合,例如:原先前端需要從三個不同的地方來獲取資源,那么,有了這一層之后,我們是不是可以做個聚合,統(tǒng)一處理之后返回給前端,同時也不授后端系統(tǒng)的變遷,導致也要去更改。
Serverless
這將是未來經常會聽到的一個詞,ServerLess 是一種 “無服務器架構”,它不需要開發(fā)者去關心運維、流量處理這些工作,開發(fā)者則可以更關注于業(yè)務本身。
函數(shù)即服務,那么寫一個函數(shù)就可以實現(xiàn)一個 API 接口給到前端,顯然對開發(fā)工作是減輕了很多,在 JavaScript 中函數(shù)則是一等一的公民,在 ServerLess 這一場景下 Node.js 本身也很輕量級,還是擁有著很大的優(yōu)勢。
Microservices(微服務)
微服務也是近兩年一個很火熱的詞,這里提幾個微服務主要的特點:小型服務、以獨立進程運行、可以使用不同語言。那么這里則可以根據(jù)業(yè)務形態(tài)來選擇不同的語言實現(xiàn),Node.js 本身也是很輕量級的,實現(xiàn)起來也很快,在一些 I/O 密集場景還是很適用的。
什么場景選擇什么工具,沒有最好的只有更合適的!