作者丨P. Rehan
編譯丨諾亞
“Node.js有危險(xiǎn)了!”
“任何能夠自救的開發(fā)人員都應(yīng)該盡快遷移到另一個(gè)后端環(huán)境!”JavaScript的仇恨者說。
不用理會這些言論。Node.js將繼續(xù)存在,并將成為后端Web開發(fā)的終極游戲規(guī)則改變者。
一、是什么讓 Node.js 成為后端開發(fā)的寵兒?
在過去的后端開發(fā)時(shí)代,PHP是構(gòu)建Web項(xiàng)目的主要工具。
但隨著歲月流逝,在Web開發(fā)中PHP逐漸變得不那么合時(shí)宜,就像古怪又神經(jīng)質(zhì)的大叔,沒有人知道它為什么還存在了。之后Ruby(基于Rails)出現(xiàn)了,帶著一籮筐的顛覆性的花哨技術(shù),就像喝拿鐵咖啡的潮人一樣。我們都有過這樣的“親戚”,(可惜的是)我們并不想和他們在一起。Java就更不用提了。
直到幾年前,一種新的、不那么時(shí)髦但卻非常高效的東西進(jìn)入了后端開發(fā)的世界,那就是——Node.js。
簡單來說,Node.js是一個(gè)開源的跨平臺JavaScript運(yùn)行時(shí)環(huán)境,它讓JavaScript成為與PHP、Python、Perl、Ruby等服務(wù)端語言平起平坐的腳本語言。值得注意的是,Node.js在2017年改變了世界,這一年它得到了廣泛的使用。
Node.js的歷史是在打破GitHub上的4萬星標(biāo)記之前創(chuàng)建的。它只是在Web瀏覽器之外運(yùn)行代碼的小型JavaScript環(huán)境之一。但是,事實(shí)證明,Node.js正是后端開發(fā)界多年來一直在尋找的:一個(gè)能夠處理大量流量的勢不可擋的迷人環(huán)境。
以下功能使Node.js成為后端Web開發(fā)的典型代表:
- 其占用空間小,使其成為基于云的應(yīng)用程序的出色開發(fā)工具。
- 由于它的V8 JavaScript引擎,它幾乎和光一樣快。
- 應(yīng)用程序開發(fā)具有很強(qiáng)的可擴(kuò)展性和響應(yīng)性。
- 它的社區(qū)中有近10萬名活躍的開發(fā)人員。
- 它擁有無窮無盡的 API 和無限的生態(tài)系統(tǒng),允許你創(chuàng)建從基本的 1-2-3 應(yīng)用程序到火箭科學(xué)級微服務(wù)結(jié)構(gòu)的所有內(nèi)容。
二、奧秘是什么?
試想:一個(gè)后端開發(fā)環(huán)境如何在保持健壯性和響應(yīng)能力的同時(shí)管理如此多的查詢?流經(jīng)其血管的秘密成分是什么?
Node.js除了使用與Google Chrome相同的引擎外,還采用事件驅(qū)動的非阻塞I/O方法。
正是它推動了Netflix(流媒體服務(wù))、Discord機(jī)器人(聊天機(jī)器人)和8 Ball Pool(在線游戲)等實(shí)時(shí)應(yīng)用程序的發(fā)展。
將事件驅(qū)動的非阻塞 I/O 模型想象成一個(gè)超級英雄,你將其命名為 Node-Man。
他的獨(dú)特能力是處理多項(xiàng)任務(wù)并毫不費(fèi)力地救人。他的能力來自 I/O 模型,該模型可以處理多個(gè)請求,而無需等待一個(gè)請求完成后再進(jìn)行下一個(gè)請求。
這就是節(jié)點(diǎn)人超越閃電俠并擊敗鋼鐵俠的方式。
三、被誤解的Node.js:五個(gè)必須了解的真相
以下是關(guān)于 Node.js 的五個(gè)常見誤解:
1. Node.js 不是大型商業(yè)應(yīng)用程序的最佳選擇,因?yàn)樗狈蓴U(kuò)展性。上次我們看到,每個(gè)組織都在嘗試將其應(yīng)用程序提升到新的性能高度,而Node.js將提供這一點(diǎn)。
2. PayPal,沃爾瑪,Trello、領(lǐng)英,以及Netflix,都聲稱它僅適用于小型應(yīng)用程序。它們是一些最復(fù)雜的應(yīng)用程序,使用 Node.js 來處理請求,并且運(yùn)行時(shí)幾乎沒有停機(jī)時(shí)間。
3. 它僅用于Web開發(fā)。事實(shí)上,Node.js 非常適合桌面應(yīng)用程序、物聯(lián)網(wǎng)設(shè)備和命令行工具。Slack和Visual Studio Code都是Electron-Node.js強(qiáng)大組合的產(chǎn)品。Gatsby和Yarn是命令行工具,用于創(chuàng)建在Node.js上運(yùn)行的快速和安全的網(wǎng)站。
4. CPU 密集型任務(wù)會破壞 Node.js。當(dāng)然,這是一個(gè)單線程環(huán)境,性能會受到請求數(shù)量的影響。但是,你可以通過創(chuàng)建任務(wù)隊(duì)列或生成特定于任務(wù)的異步子進(jìn)程來解決此限制。
5. Node.js 允許在最值得信賴的庫上運(yùn)行時(shí)進(jìn)行輸入驗(yàn)證和清理,因此它不是一個(gè)很好的安全替代方案。Node.js 支持 TLS/SSL 通信。它對通信進(jìn)行加密,并保護(hù)它免受漏洞和攻擊。
四、影響后端開發(fā)未來的Node.js 趨勢
除了可擴(kuò)展性和閃電般的效率之外,Node.js最大的優(yōu)勢是其簡單的學(xué)習(xí)曲線。這就像在掌握節(jié)點(diǎn)后玩連接節(jié)點(diǎn)的游戲。
由于這些特性,GraphQL、無服務(wù)器計(jì)算、微服務(wù)架構(gòu)和漸進(jìn)式Web應(yīng)用程序(PWA)等Web開發(fā)概念正變得越來越流行。
小型、獨(dú)立的服務(wù)時(shí)代即將到來,每個(gè)服務(wù)都是業(yè)務(wù)功能所獨(dú)有的,通過 API 進(jìn)行交互,并從單個(gè)共享代碼庫運(yùn)行。
模塊化和可擴(kuò)展的Web應(yīng)用程序開發(fā)時(shí)代即將開啟。
五、一年后Node.js會在哪里?
自2009年發(fā)布以來,Node.js已經(jīng)走了很長一段路,但對于這個(gè)JavaScript跨平臺來說,最令人興奮的旅程還沒有到來。
可以展望的是,Node.js最終將揚(yáng)帆遠(yuǎn)航,逃離后端開發(fā)的水域。它將跟蹤機(jī)器學(xué)習(xí)、人工智能、物聯(lián)網(wǎng)設(shè)備和桌面應(yīng)用程序的發(fā)展,探索其中的未知領(lǐng)域。
如果認(rèn)為這些領(lǐng)域不受其他語言和庫的影響,那將是愚蠢的。
GO、Deno、ASP.net和Flask等后端框架/語言對Node.js的采用和生存構(gòu)成了威脅。
即使存在風(fēng)險(xiǎn),未來也是光明和繁榮的,就像 Node.js API 庫一樣。
參考鏈接:https://pinjarirehan.medium.com/why-node-js-is-the-ultimate-game-changer-for-backend-development-26415839bbe2