"
"
Node.js 是什麼?我為什麼選擇它?

當我們學習一項新的事物的時候,我們首先要知道它來自哪裡?它是什麼?能做什麼或者換句話說,能解決什麼問題?沒有一樣東西是最好的,是可以替代所有的,但在某一領域它是最適合的,正如 Node.js 它可能是某些程序員苦苦追尋的東西,也可能是某些程序員不會去關心的東西。本文主要為您介紹 Node.js 的背景及它能做什麼,擅長什麼,不會涉及到複雜的代碼層面的知識講解,如果你覺得自己很熟悉了,也可以忽略它。

作者簡介:五月君,Nodejs Developer,熱愛技術、喜歡分享的 90 後青年,「Nodejs技術棧」,Github 開源項目 https://www.nodejs.red

文末附上筆者最近整理的 Node.js 技術棧學習指南路線圖 供大家學習參考!

背景介紹

Node.js® is a JavaScript runtime built on Chrome’s V8 JavaScript engine. 這是來自 Node.js 官網 https://nodejs.org/en/ 的一段介紹,翻譯成中文意為 Node.js 是一個基於 Chrome V8 引擎的 JavaScript 運行環境。這裡重點幾個關鍵詞 V8、JavaScript 後續會講解,從這裡可以看出 Node.js 並不是一門新的編程語言,做為初學者這點先要弄清楚,它是 JavaScript 的運行環境,更進一步的說是在服務端的運行環境,因此這裡的編程語言指的是 JavaScript。

時間迴歸到 2009 年,在當時 JavaScript 還是一個跑在瀏覽器環境裡的一門腳本語言,當時的筆者還是一名高中生,接觸的編程語言是 VB 並不知 JavaScript 為何物,但隨後接觸 JavaScript 之後瞭解到這之前用它可以寫一些瀏覽器腳本,做一些動態特效,主要用於前端頁面交互。在 2009 這一時間線之後 Javascript 不只運行於瀏覽器,還可以運行於服務端,簡直打通了前端與後端的任督二脈,當然這要歸功於 Node.js 之父 Ryan Dahl。一度認為這是很偉大的,在眾多編程語言裡,為什麼會選擇 JavaScript 呢?且看下面介紹。

為什麼是 JavaScript?

Node.js 使用了一個事件驅動、非阻塞式 I/O 的模型,使其輕量又高效。這是來自於 Node.js 的另一個介紹,關鍵詞 事件驅動、非阻塞式 I/O 因此,在基於這些條件之下 Node.js 作者 Ryan Dahl 在評估了 C、Lua、Haskell、Ruby、JavaScript 等語言之後,最終選擇了 JavaScript,為什麼呢?

JavaScript 是一個單線程的語言,單線程的優點是不會像 Java 這些多線程語言在編程時出現線程同步、線程鎖問題同時也避免了上下文切換帶來的性能開銷問題,那麼其實在瀏覽器環境也只能是單線程,可以想象一下多線程對同一個 DOM 進行操作是什麼場景?不是亂套了嗎?那麼單線程可能你會想到的一個問題是,前面一個執行不完,後面不就卡住了嗎?當然不能這樣子的,JavaScript 是一種採用了事件驅動、異步回調的模式,另外 JavaScript 在服務端不存在什麼歷史包袱,在虛擬機上由於又有了 Chrome V8 的支持,使得 JavaScript 成為了 Node.js 的首選語言。

為什麼選擇 JavaScript 作者 Ryan Dahl 應該是最有發言權的,這裡查了一些資料及參考了 深入淺出 Node.js 一書,供大家有個初步的認知。

Node.js 架構

Node.js 由 Libuv、Chrome V8、一些核心 API 構成,如下圖所示:

"
Node.js 是什麼?我為什麼選擇它?

當我們學習一項新的事物的時候,我們首先要知道它來自哪裡?它是什麼?能做什麼或者換句話說,能解決什麼問題?沒有一樣東西是最好的,是可以替代所有的,但在某一領域它是最適合的,正如 Node.js 它可能是某些程序員苦苦追尋的東西,也可能是某些程序員不會去關心的東西。本文主要為您介紹 Node.js 的背景及它能做什麼,擅長什麼,不會涉及到複雜的代碼層面的知識講解,如果你覺得自己很熟悉了,也可以忽略它。

作者簡介:五月君,Nodejs Developer,熱愛技術、喜歡分享的 90 後青年,「Nodejs技術棧」,Github 開源項目 https://www.nodejs.red

文末附上筆者最近整理的 Node.js 技術棧學習指南路線圖 供大家學習參考!

背景介紹

Node.js® is a JavaScript runtime built on Chrome’s V8 JavaScript engine. 這是來自 Node.js 官網 https://nodejs.org/en/ 的一段介紹,翻譯成中文意為 Node.js 是一個基於 Chrome V8 引擎的 JavaScript 運行環境。這裡重點幾個關鍵詞 V8、JavaScript 後續會講解,從這裡可以看出 Node.js 並不是一門新的編程語言,做為初學者這點先要弄清楚,它是 JavaScript 的運行環境,更進一步的說是在服務端的運行環境,因此這裡的編程語言指的是 JavaScript。

時間迴歸到 2009 年,在當時 JavaScript 還是一個跑在瀏覽器環境裡的一門腳本語言,當時的筆者還是一名高中生,接觸的編程語言是 VB 並不知 JavaScript 為何物,但隨後接觸 JavaScript 之後瞭解到這之前用它可以寫一些瀏覽器腳本,做一些動態特效,主要用於前端頁面交互。在 2009 這一時間線之後 Javascript 不只運行於瀏覽器,還可以運行於服務端,簡直打通了前端與後端的任督二脈,當然這要歸功於 Node.js 之父 Ryan Dahl。一度認為這是很偉大的,在眾多編程語言裡,為什麼會選擇 JavaScript 呢?且看下面介紹。

為什麼是 JavaScript?

Node.js 使用了一個事件驅動、非阻塞式 I/O 的模型,使其輕量又高效。這是來自於 Node.js 的另一個介紹,關鍵詞 事件驅動、非阻塞式 I/O 因此,在基於這些條件之下 Node.js 作者 Ryan Dahl 在評估了 C、Lua、Haskell、Ruby、JavaScript 等語言之後,最終選擇了 JavaScript,為什麼呢?

JavaScript 是一個單線程的語言,單線程的優點是不會像 Java 這些多線程語言在編程時出現線程同步、線程鎖問題同時也避免了上下文切換帶來的性能開銷問題,那麼其實在瀏覽器環境也只能是單線程,可以想象一下多線程對同一個 DOM 進行操作是什麼場景?不是亂套了嗎?那麼單線程可能你會想到的一個問題是,前面一個執行不完,後面不就卡住了嗎?當然不能這樣子的,JavaScript 是一種採用了事件驅動、異步回調的模式,另外 JavaScript 在服務端不存在什麼歷史包袱,在虛擬機上由於又有了 Chrome V8 的支持,使得 JavaScript 成為了 Node.js 的首選語言。

為什麼選擇 JavaScript 作者 Ryan Dahl 應該是最有發言權的,這裡查了一些資料及參考了 深入淺出 Node.js 一書,供大家有個初步的認知。

Node.js 架構

Node.js 由 Libuv、Chrome V8、一些核心 API 構成,如下圖所示:

Node.js 是什麼?我為什麼選擇它?

以上展示了 Node.js 的構成,下面做下簡單說明:

  • Node Standard Library:Node.js 標準庫,對外提供的 JavaScript 接口,例如模塊 http、buffer、fs、stream 等Node bindings:這裡就是 JavaScript 與 C++ 連接的橋樑,對下層模塊進行封裝,向上層提供基礎的 API 接口。V8:Google 開源的高性能 JavaScript 引擎,使用 C++ 開發,並且應用於谷歌瀏覽器。如果您感興趣想學習更多的 V8 引擎知識,請訪問 What is V8?Libuv:是一個跨平臺的支持事件驅動的 I/O 庫。它是使用 C 和 C++ 語言為 Node.js 所開發的,同時也是 I/O 操作的核心部分,例如讀取文件和 OS 交互。來自一份 Libuv 的中文教程C-ares:C-ares 是一個異步 DNS 解析庫Low-Level Components:提供了 http 解析、OpenSSL、數據壓縮(zlib)等功能。

以上只是做一個初步的認知,如果你想深入瞭解 Node.js 那麼多每個點都是值得你深入研究的。

來自 stack overflow 的一個參考:which-is-correct-node-js-architecture

Node.js 特點

在瞭解了 Node.js 的一些背景及架構模型之後,已經解決了它來自哪裡?是什麼?這個問題,現在我們來看看能解決什麼問題?它適合做什麼?

在這之前不知道您有沒有聽說過,Node.js 很擅長 I/O 密集型任務,應對一些 I/O 密集型的高併發場景還是很有優勢的,事實也如此,這也是它的定位:提供一種簡單安全的方法在 JavaScript 中構建高性能和可擴展的網絡應用程序。

  • 單線程

Node.js 使用單線程來運行,而不是向 Apache HTTP 之類的其它服務器,每個請求將生產一個線程,這種方法避免了 CPU 上下文切換和內存中的大量執行堆棧,這也是 Nginx 和其它服務器為解決 “上一個 10 年,著名的 C10K 併發連接問題” 而採用的方法。

  • 非阻塞 I/O

Node.js 避免了由於需要等待輸入或者輸出(數據庫、文件系統、Web服務器…)響應而造成的 CPU 時間損失,這得益於 Libuv 強大的異步 I/O。

  • 事件驅動編程

事件與回調在 JavaScript 中已是屢見不鮮,同時這種編程對於習慣同步思路的同學來說可能一時很難理解,但是這種編程模式,確是一種高性能的服務模型。Node.js 與 Nginx 均是基於事件驅動的方式實現,不同之處在於 Nginx 採用純 C 進行編寫,僅適用於 Web 服務器,在業務處理方面 Node.js 則是一個可擴展、高性能的平臺。

  • 跨平臺

起初 Node.js 只能運行於 Linux 平臺,在 v0.6.0 版本後得益於 Libuv 的支持可以在 Windows 平臺運行。

Node.js 適用於什麼

講了這麼多那麼談下 Node.js 適合什麼場景?

  • I/O 密集型場景

Node.js 的優勢主要在於事件循環,非阻塞異步 I/O,只開一個線程,不會每個請求過來我都去創建一個線程,從而產生資源開銷。

  • ResutFul API

通常我們可以使用 Node.js 來做為中間層,負責組裝數據提供 API 接口給到前端調用,這些數據源可能來自第三方接口或者數據庫,例如,以前可能我們通過後端 Java、PHP 等其它語言來做,現在我們前端工程師通過 Node.js 即可完成,後端則可以更專注於業務開發。

既然提到了 ResultFul API,順便推薦一個去哪兒開源的 API 管理工具 YAPI:https://github.com/YMFE/yapi 使用的 Node.js 進行開發的(聲明下這裡不是打廣告,只是這個用起來真的很贊!忍不住向給大家推薦!)。

  • RPC 服務

RPC(Remote Procedure Call)中文名「遠程過程調用」,也許你對它很陌生,但是在當今微服務模式下,我們可能是針對功能或者具體的業務形態進行服務化,那麼服務之間的通信一種常見的模式我們都知道通過 HTTP 來實現,瞭解網絡模型的同學可能知道,如果我們現在通過 TCP 的方式是不是會更高效呢?

當然是的,HTTP 屬於應用層協議,在這之下就是傳輸層,顯然以 TCP 形式是很有優勢的,RPC 服務也就是採用的 TCP,現在出名的 RPC 服務例如,Google 的 gRPC、阿里的 Dubbo。

  • 基礎工具

可以做為基礎工具,前端領域中的編譯器、構建工具、搭建腳手架等。比較出名的例如 Webpack、Gulp 都是很成功的。

  • 論壇社區

Nodeclub 是使用 Node.js 和 MongoDB 開發的社區系統,界面優雅,功能豐富,小巧迅速,可以用它搭建自己的社區。Cnode 社區就是一個成功的例子,Cnode 地址:https://cnodejs.org/

https://github.com/cnodejs/nodeclub

  • Backend For Frontend

Backend For Frontend,簡稱 BFF,服務於前端的後端,並非是一種新技術只是一種邏輯上的分層,在這一層我們可以做一些資源的整合,例如:原先前端需要從三個不同的地方來獲取資源,那麼,有了這一層之後,我們是不是可以做個聚合,統一處理之後返回給前端,同時也不授後端系統的變遷,導致也要去更改。

  • Serverless

這將是未來經常會聽到的一個詞,ServerLess 是一種 “無服務器架構”,它不需要開發者去關心運維、流量處理這些工作,開發者則可以更關注於業務本身。

函數即服務,那麼寫一個函數就可以實現一個 API 接口給到前端,顯然對開發工作是減輕了很多,在 JavaScript 中函數則是一等一的公民,在 ServerLess 這一場景下 Node.js 本身也很輕量級,還是擁有著很大的優勢。

  • Microservices

微服務也是近兩年一個很火熱的詞,這裡提幾個微服務主要的特點:小型服務、以獨立進程運行、可以使用不同語言。那麼這裡則可以根據業務形態來選擇不同的語言實現,Node.js 本身也是很輕量級的,實現起來也很快,在一些 I/O 密集場景還是很適用的。

什麼場景選擇什麼工具,沒有最好的只有更合適的!

為什麼選擇 Node.js

談一些個人感受及經歷,其實接觸計算機行業說不晚也不早,在高中階段開始接觸的編程,在接觸 Node.js 之前也學過很多編程語言,大致曲線是這樣的 VB(這個是在高中時期)、C、C#(.Net)、Java、PHP 這些都是在學校的時候沒事玩弄的,還有接觸到前端,真的很雜,但沒有一樣精通的,這也是最可怕的,在大三暑假去了北京一家公司在那裡實習了兩個月 PHP,但是之間有遇見做 Node.js 的同學,當時很好奇,哇奧,這是什麼東東,竟然可以讓 JavaScript 做後端,就是沒見過市面那種。後來簡單的做了瞭解,回到學校之後開始學習 Node.js 網上找各種資料看,陰差陽錯吧,就這樣選擇了 Node.js 直到現在,其實語言只是一種工具,例如在後端中,拋開語言這一層,還有很多東西是需要我們去不斷學習的。

最後一點建議:不要給自己設定邊界,例如:我一定要學習 Node.js 或者我一定要學習 Java 又或者 Python,其實在有條件的情況下可以多接觸一些其它東西,一方面擴展了自己的邊界,另一方面自己也可以從中獲取收益。

Node.js 技術棧學習指南路線圖

"
Node.js 是什麼?我為什麼選擇它?

當我們學習一項新的事物的時候,我們首先要知道它來自哪裡?它是什麼?能做什麼或者換句話說,能解決什麼問題?沒有一樣東西是最好的,是可以替代所有的,但在某一領域它是最適合的,正如 Node.js 它可能是某些程序員苦苦追尋的東西,也可能是某些程序員不會去關心的東西。本文主要為您介紹 Node.js 的背景及它能做什麼,擅長什麼,不會涉及到複雜的代碼層面的知識講解,如果你覺得自己很熟悉了,也可以忽略它。

作者簡介:五月君,Nodejs Developer,熱愛技術、喜歡分享的 90 後青年,「Nodejs技術棧」,Github 開源項目 https://www.nodejs.red

文末附上筆者最近整理的 Node.js 技術棧學習指南路線圖 供大家學習參考!

背景介紹

Node.js® is a JavaScript runtime built on Chrome’s V8 JavaScript engine. 這是來自 Node.js 官網 https://nodejs.org/en/ 的一段介紹,翻譯成中文意為 Node.js 是一個基於 Chrome V8 引擎的 JavaScript 運行環境。這裡重點幾個關鍵詞 V8、JavaScript 後續會講解,從這裡可以看出 Node.js 並不是一門新的編程語言,做為初學者這點先要弄清楚,它是 JavaScript 的運行環境,更進一步的說是在服務端的運行環境,因此這裡的編程語言指的是 JavaScript。

時間迴歸到 2009 年,在當時 JavaScript 還是一個跑在瀏覽器環境裡的一門腳本語言,當時的筆者還是一名高中生,接觸的編程語言是 VB 並不知 JavaScript 為何物,但隨後接觸 JavaScript 之後瞭解到這之前用它可以寫一些瀏覽器腳本,做一些動態特效,主要用於前端頁面交互。在 2009 這一時間線之後 Javascript 不只運行於瀏覽器,還可以運行於服務端,簡直打通了前端與後端的任督二脈,當然這要歸功於 Node.js 之父 Ryan Dahl。一度認為這是很偉大的,在眾多編程語言裡,為什麼會選擇 JavaScript 呢?且看下面介紹。

為什麼是 JavaScript?

Node.js 使用了一個事件驅動、非阻塞式 I/O 的模型,使其輕量又高效。這是來自於 Node.js 的另一個介紹,關鍵詞 事件驅動、非阻塞式 I/O 因此,在基於這些條件之下 Node.js 作者 Ryan Dahl 在評估了 C、Lua、Haskell、Ruby、JavaScript 等語言之後,最終選擇了 JavaScript,為什麼呢?

JavaScript 是一個單線程的語言,單線程的優點是不會像 Java 這些多線程語言在編程時出現線程同步、線程鎖問題同時也避免了上下文切換帶來的性能開銷問題,那麼其實在瀏覽器環境也只能是單線程,可以想象一下多線程對同一個 DOM 進行操作是什麼場景?不是亂套了嗎?那麼單線程可能你會想到的一個問題是,前面一個執行不完,後面不就卡住了嗎?當然不能這樣子的,JavaScript 是一種採用了事件驅動、異步回調的模式,另外 JavaScript 在服務端不存在什麼歷史包袱,在虛擬機上由於又有了 Chrome V8 的支持,使得 JavaScript 成為了 Node.js 的首選語言。

為什麼選擇 JavaScript 作者 Ryan Dahl 應該是最有發言權的,這裡查了一些資料及參考了 深入淺出 Node.js 一書,供大家有個初步的認知。

Node.js 架構

Node.js 由 Libuv、Chrome V8、一些核心 API 構成,如下圖所示:

Node.js 是什麼?我為什麼選擇它?

以上展示了 Node.js 的構成,下面做下簡單說明:

  • Node Standard Library:Node.js 標準庫,對外提供的 JavaScript 接口,例如模塊 http、buffer、fs、stream 等Node bindings:這裡就是 JavaScript 與 C++ 連接的橋樑,對下層模塊進行封裝,向上層提供基礎的 API 接口。V8:Google 開源的高性能 JavaScript 引擎,使用 C++ 開發,並且應用於谷歌瀏覽器。如果您感興趣想學習更多的 V8 引擎知識,請訪問 What is V8?Libuv:是一個跨平臺的支持事件驅動的 I/O 庫。它是使用 C 和 C++ 語言為 Node.js 所開發的,同時也是 I/O 操作的核心部分,例如讀取文件和 OS 交互。來自一份 Libuv 的中文教程C-ares:C-ares 是一個異步 DNS 解析庫Low-Level Components:提供了 http 解析、OpenSSL、數據壓縮(zlib)等功能。

以上只是做一個初步的認知,如果你想深入瞭解 Node.js 那麼多每個點都是值得你深入研究的。

來自 stack overflow 的一個參考:which-is-correct-node-js-architecture

Node.js 特點

在瞭解了 Node.js 的一些背景及架構模型之後,已經解決了它來自哪裡?是什麼?這個問題,現在我們來看看能解決什麼問題?它適合做什麼?

在這之前不知道您有沒有聽說過,Node.js 很擅長 I/O 密集型任務,應對一些 I/O 密集型的高併發場景還是很有優勢的,事實也如此,這也是它的定位:提供一種簡單安全的方法在 JavaScript 中構建高性能和可擴展的網絡應用程序。

  • 單線程

Node.js 使用單線程來運行,而不是向 Apache HTTP 之類的其它服務器,每個請求將生產一個線程,這種方法避免了 CPU 上下文切換和內存中的大量執行堆棧,這也是 Nginx 和其它服務器為解決 “上一個 10 年,著名的 C10K 併發連接問題” 而採用的方法。

  • 非阻塞 I/O

Node.js 避免了由於需要等待輸入或者輸出(數據庫、文件系統、Web服務器…)響應而造成的 CPU 時間損失,這得益於 Libuv 強大的異步 I/O。

  • 事件驅動編程

事件與回調在 JavaScript 中已是屢見不鮮,同時這種編程對於習慣同步思路的同學來說可能一時很難理解,但是這種編程模式,確是一種高性能的服務模型。Node.js 與 Nginx 均是基於事件驅動的方式實現,不同之處在於 Nginx 採用純 C 進行編寫,僅適用於 Web 服務器,在業務處理方面 Node.js 則是一個可擴展、高性能的平臺。

  • 跨平臺

起初 Node.js 只能運行於 Linux 平臺,在 v0.6.0 版本後得益於 Libuv 的支持可以在 Windows 平臺運行。

Node.js 適用於什麼

講了這麼多那麼談下 Node.js 適合什麼場景?

  • I/O 密集型場景

Node.js 的優勢主要在於事件循環,非阻塞異步 I/O,只開一個線程,不會每個請求過來我都去創建一個線程,從而產生資源開銷。

  • ResutFul API

通常我們可以使用 Node.js 來做為中間層,負責組裝數據提供 API 接口給到前端調用,這些數據源可能來自第三方接口或者數據庫,例如,以前可能我們通過後端 Java、PHP 等其它語言來做,現在我們前端工程師通過 Node.js 即可完成,後端則可以更專注於業務開發。

既然提到了 ResultFul API,順便推薦一個去哪兒開源的 API 管理工具 YAPI:https://github.com/YMFE/yapi 使用的 Node.js 進行開發的(聲明下這裡不是打廣告,只是這個用起來真的很贊!忍不住向給大家推薦!)。

  • RPC 服務

RPC(Remote Procedure Call)中文名「遠程過程調用」,也許你對它很陌生,但是在當今微服務模式下,我們可能是針對功能或者具體的業務形態進行服務化,那麼服務之間的通信一種常見的模式我們都知道通過 HTTP 來實現,瞭解網絡模型的同學可能知道,如果我們現在通過 TCP 的方式是不是會更高效呢?

當然是的,HTTP 屬於應用層協議,在這之下就是傳輸層,顯然以 TCP 形式是很有優勢的,RPC 服務也就是採用的 TCP,現在出名的 RPC 服務例如,Google 的 gRPC、阿里的 Dubbo。

  • 基礎工具

可以做為基礎工具,前端領域中的編譯器、構建工具、搭建腳手架等。比較出名的例如 Webpack、Gulp 都是很成功的。

  • 論壇社區

Nodeclub 是使用 Node.js 和 MongoDB 開發的社區系統,界面優雅,功能豐富,小巧迅速,可以用它搭建自己的社區。Cnode 社區就是一個成功的例子,Cnode 地址:https://cnodejs.org/

https://github.com/cnodejs/nodeclub

  • Backend For Frontend

Backend For Frontend,簡稱 BFF,服務於前端的後端,並非是一種新技術只是一種邏輯上的分層,在這一層我們可以做一些資源的整合,例如:原先前端需要從三個不同的地方來獲取資源,那麼,有了這一層之後,我們是不是可以做個聚合,統一處理之後返回給前端,同時也不授後端系統的變遷,導致也要去更改。

  • Serverless

這將是未來經常會聽到的一個詞,ServerLess 是一種 “無服務器架構”,它不需要開發者去關心運維、流量處理這些工作,開發者則可以更關注於業務本身。

函數即服務,那麼寫一個函數就可以實現一個 API 接口給到前端,顯然對開發工作是減輕了很多,在 JavaScript 中函數則是一等一的公民,在 ServerLess 這一場景下 Node.js 本身也很輕量級,還是擁有著很大的優勢。

  • Microservices

微服務也是近兩年一個很火熱的詞,這裡提幾個微服務主要的特點:小型服務、以獨立進程運行、可以使用不同語言。那麼這裡則可以根據業務形態來選擇不同的語言實現,Node.js 本身也是很輕量級的,實現起來也很快,在一些 I/O 密集場景還是很適用的。

什麼場景選擇什麼工具,沒有最好的只有更合適的!

為什麼選擇 Node.js

談一些個人感受及經歷,其實接觸計算機行業說不晚也不早,在高中階段開始接觸的編程,在接觸 Node.js 之前也學過很多編程語言,大致曲線是這樣的 VB(這個是在高中時期)、C、C#(.Net)、Java、PHP 這些都是在學校的時候沒事玩弄的,還有接觸到前端,真的很雜,但沒有一樣精通的,這也是最可怕的,在大三暑假去了北京一家公司在那裡實習了兩個月 PHP,但是之間有遇見做 Node.js 的同學,當時很好奇,哇奧,這是什麼東東,竟然可以讓 JavaScript 做後端,就是沒見過市面那種。後來簡單的做了瞭解,回到學校之後開始學習 Node.js 網上找各種資料看,陰差陽錯吧,就這樣選擇了 Node.js 直到現在,其實語言只是一種工具,例如在後端中,拋開語言這一層,還有很多東西是需要我們去不斷學習的。

最後一點建議:不要給自己設定邊界,例如:我一定要學習 Node.js 或者我一定要學習 Java 又或者 Python,其實在有條件的情況下可以多接觸一些其它東西,一方面擴展了自己的邊界,另一方面自己也可以從中獲取收益。

Node.js 技術棧學習指南路線圖

Node.js 是什麼?我為什麼選擇它?

這是最近畫的一張 Node.js 技術棧學習指南路線圖,從中可以看出拋開語言這一層面,剩下的都是我們要學習的。

"

相關推薦

推薦中...