最近幾年一直使用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的優點,其更適合搭建微服務平臺。
更多精彩,請關注公眾號,互相學習,共同進步!