最近幾年一直使用Node.js作為后端服務平臺,通過Koa2框架中間件快速搭建Web服務,但是使用JavaScript開發大型后端服務時會使程序變得難以維護,繼而使用TypeScript語言開發,使編譯、調試、檢查和代碼管理變得更加容易。
下圖是使用Koa2框架搭建后端服務的思維導圖:
?
?
?
?
?
?
?
一、Node.js
介紹:一個開源的、跨平臺的JavaScript運行時環境。類似于C#的.NetFramewok,Java的JRE。
優點:
-
超強的并發能力;
-
單線程的高性能并行非阻礙I/O,基于事件驅動;
-
前后端開發語言一致,開發效率高;
-
微服務和SeverLess開發更具優勢;
不足:
-
不適合計算密集型應用;
-
不適合大內存應用;
-
不適合大量同步應用。?
使用場景:
-
開發Web服務Api,比如RESTful API;
-
服務器渲染頁面,提升速度;
-
后端的 Web服務,例如跨域、服務器端的請求。?
應用方向:
-
?善于 I/O,天生異步的特點讓其非常擅長進行任務調度和處理并發 I/O,但不善于計算;
-
業務方向:網站開發、即時通信、小程序開發、跨平臺開發等;
-
Node.js 過于追求性能而導致健壯性有所不足,所以不適用于銀行、證券等方向,但適合創業公司這種小體量、追求性能的公司;
-
大型企業在客戶端和服務器端直接加設Node.js,適合用Node.js做的就盡量用成本低回報高的Node.js來做。
?
?
?
二、Koa2
介紹:基于 Node.js 平臺的下一代 web 開發框架。由 Express 原班人馬打造的,致力于成為一個更小、更富有表現力、更健壯的 Web 框架。使用 Koa 編寫 Web 應用,可以免除重復繁瑣的回調函數嵌套, 并極大地提升錯誤處理的效率。Koa 不在內核方法中綁定任何中間件, 它僅僅提供了一個輕量優雅的函數庫,使得編寫 Web 應用變得得心應手,最大的特點就是可以避免異步嵌套。利用ES7的async/await特性,極大的解決了我們在做Node.js開發的時候異步給我們帶來的煩惱。
優點和不足:非常簡單,而且極度自由,這種理念是優點也是缺點。
?
?
?
三、未來展望
-
實時應用:實時應用是大勢所趨,并且將保持在排行榜前列。這些應用需要一個強大且健壯的后端。即時通信、視頻通話和在線游戲,以及許多其他相似的應用是完美的案例;
-
物聯網:Node.js提供一個特性豐富的運行環境,允許開發者使用面向數據和及時能力,以及微服務,當你在為自己的客戶構建 IoT(物聯網)應用時,你可以相信 Node.js 能夠幫助到你;
-
SeverLess:每個人都喜歡既能省錢還能提高開發者的生產力和效率的方案,而將 Node.js 用于無服務架構正好是一個絕妙的解決方案。維護成本幾乎為零,而且并不需要公司擔心其應用的性能;
-
GraphQL:GraphQL 是 RESTful API 的一個成功的選項。GraphQL 使程序員可以精確地說明它需要的信息。它可以有效地從不同的渠道收集大量信息。GraphQL 每年都在發展,是另一種 Node.js 趨勢;
-
微服務:基于Node.js的優點,其更適合搭建微服務平臺。
?
?
? ? ? ?
? ? ? ? ??更多精彩,請關注公眾號,互相學習,共同進步!
?