前兩天有個(gè)同學(xué)問(wèn)我說(shuō):“學(xué)到什么程度才是 node js 入門(mén)?”
這個(gè)問(wèn)題不是第一次聽(tīng)到了,之前也有問(wèn)到過(guò)類似的問(wèn)題。
其實(shí)所謂 Node
和 NodeJS
是不太一樣的:
- Node:指的是一個(gè)運(yùn)行環(huán)境。就像瀏覽器一樣,是
js
代碼執(zhí)行的位置。我們下載的這個(gè)安裝包,其實(shí)就是 node,也就是運(yùn)行環(huán)境。

- Nodejs:指的是在 node 環(huán)境中執(zhí)行的 js 代碼。只要你會(huì) js,那么就 “天生入門(mén)”。
所以 對(duì)于前端來(lái)說(shuō),“NodeJS 天生入門(mén)”。
那么為什么所有的同學(xué)都會(huì) NodeJS,但是卻 不會(huì)使用 NodeJS 搭建后端項(xiàng)目呢?
其實(shí)原因主要有三點(diǎn):
關(guān)于 node API
在前端的學(xué)習(xí)中,我們通常都需要學(xué)習(xí) BOM
和 DOM
的概念。它們兩個(gè)都是在瀏覽器中所獨(dú)有的。
但是在 Node 環(huán)境下,它是有一套獨(dú)有的 API 的

如果想要使用 Node,那么就必須要了解這些 API 才可以。
關(guān)于后端開(kāi)發(fā)邏輯
什么是后端開(kāi)發(fā)邏輯呢?咱們舉個(gè)例子:
比如在前端項(xiàng)目中,我們可能會(huì)經(jīng)常使用 Vuex || Redux
來(lái)保存當(dāng)前用戶的狀態(tài)。但是在服務(wù)端中,是 不可以 直接使用全局狀態(tài)管理工具來(lái)保存用戶狀態(tài)的。
因?yàn)閷?duì)于后端來(lái)說(shuō),不存在 當(dāng)前用戶的概念。后端會(huì)通過(guò) 會(huì)話機(jī)制 來(lái)管理用戶狀態(tài),而不是像前端那樣直接使用全局狀態(tài)管理工具。
除此之外,還有 數(shù)據(jù)庫(kù)操作、事務(wù)處理、并發(fā)處理 等等,這些操作在前端都是沒(méi)有的。
所以,如果沒(méi)有這些后端開(kāi)發(fā)邏輯,那么想要完成對(duì)應(yīng)的后端開(kāi)發(fā),就是天方夜譚了。
關(guān)于Node框架
不使用框架,僅使用 NodeJS 的原生 API(path模塊、http模塊 等
),想要構(gòu)建一個(gè)后端項(xiàng)目,肯定是非常困難的。(就好比現(xiàn)在讓大家不使用任何框架,搭建一個(gè)前端項(xiàng)目一樣)
所以說(shuō),想要使用 NodeJS 搭建自己的后端項(xiàng)目,那么除了要了解 JavaScript 之外,還需要掌握 NodeJS 框架的使用。
我在這里給大家構(gòu)建了一個(gè)表格,描述了目前最火的 5 個(gè) NodeJS 框架的特點(diǎn),以供大家參考:
| | | |
---|
| – 簡(jiǎn)約、靈活、高度定制 – 中間件支持 – 強(qiáng)大的路由 – 與模板引擎和數(shù)據(jù)庫(kù)兼容 | – 易于學(xué)習(xí)和使用 – 豐富的文檔和社區(qū)支持 – 高度可定制 | – 與更具主見(jiàn)的框架相比,缺乏內(nèi)置功能 – 在較大的應(yīng)用程序中,中間件管理可能變得復(fù)雜 |
| – Async/await 實(shí)現(xiàn)更好的控制流 – 輕量級(jí)和模塊化 – 增強(qiáng)上下文處理 | – 代碼更清晰,可讀性更強(qiáng) – 更好地控制請(qǐng)求/響應(yīng)處理 – 鼓勵(lì)模塊化架構(gòu) | – 與 Express.js 相比,社區(qū)規(guī)模較小 – 常見(jiàn)任務(wù)需要更多手動(dòng)設(shè)置 |
NestJS:最強(qiáng)大,大型應(yīng)用必備 | – 模塊化架構(gòu) – 完全支持 TypeScript – 內(nèi)置依賴注入 – 支持微服務(wù)和 GraphQL | – 強(qiáng)大的 TypeScript 支持 – 結(jié)構(gòu)良好、可擴(kuò)展的應(yīng)用程序 – 豐富的內(nèi)置功能和模塊 | – 學(xué)習(xí)難度較高,尤其是對(duì)于 TypeScript 新手來(lái)說(shuō) – 對(duì)于簡(jiǎn)單的項(xiàng)目來(lái)說(shuō)可能有點(diǎn)過(guò)度 |
| – 高性能,低開(kāi)銷 – 基于 JSON Schema 的驗(yàn)證和序列化 – 強(qiáng)大的插件架構(gòu) | – 速度極快且輕量 – 內(nèi)置驗(yàn)證和序列化 – 高度注重性能 | – 與 Express.js 相比,生態(tài)系統(tǒng)較小 – 對(duì)于習(xí)慣于傳統(tǒng)框架的開(kāi)發(fā)人員來(lái)說(shuō),直觀性較差 |
| – 以配置為中心 – 全面的插件系統(tǒng) – 強(qiáng)大的安全功能和輸入驗(yàn)證 | – 高度可配置性和可擴(kuò)展性 – 高度注重安全性和輸入驗(yàn)證 – 大量插件和內(nèi)置功能 | – 更復(fù)雜的配置設(shè)置 – 與 Express.js 相比,學(xué)習(xí)曲線更陡峭 |
閱讀原文:https://mp.weixin.qq.com/s/jsygrUEqazgv_qB7JxcfQQ
該文章在 2025/4/19 14:39:35 編輯過(guò)