為什么是 Node.js ? 什么時候使用 Node.js ?

jopen 9年前發布 | 38K 次閱讀 Node.js

 

為什么是 Node.js ? 什么時候使用 Node.js ?

關于本文

對于服務器端開發語言來說,Java 和 PHP 可能是現在的企業用的最多的了。但是,Node.js 作為一門 Javascript 里面的服務器端語言在高并發方面的表現卻不亞于用 Java 開發的企業級應用。國內國外的一些大型公司都逐漸的在將自己的應用使用 Node 構建,淘寶里面的一些模塊就是很好的例子。本文將要介紹 Node.js 的一些基礎知識和應用場景。

文章內容

學習什么是 Node.js ? 為什么它會這么受歡迎 ?你可以在哪些地方用到它?

想一下為什么 Node.js 越來越受歡迎了?什么時候使用 Node.js ?這篇文章有你想要的所有關于 Node.js 框架和最好的在社區實踐的一切細節。

Node.js 通過用單線程取代多線程,事件驅動 I/O 來解決了高并發,取代了 Java 平臺的標準。在這篇文章中,我們將討論 Node.js 并且會闡明為什么事件驅動并發會如此的受歡迎,甚至包括一些核心的 Java 開發者。

我們等會兒會向你介紹一些 Node.js 最好的實踐來讓你使用 Node’s Express 框架,Mongolian DeadBeef 和 MongoDB 來做一個即時的,可擴展的,并且持久化的 web 應用。

一些歷史背景

在過去的一些年里面, JavaScript 已經成為了一個“黑暗騎士”,有點像是 web 開發的**。但是事實卻讓很多過去說 JavaScript 是一門 “玩具語言” 的 web 應用開發者感到驚訝。

雖然有很多知名的語言,但是 JavaScript 作為標準的,瀏覽器中的腳本語言卻讓它保持主流地位。對于網站客戶端的開發,它可是全球用得最廣泛的語言。

JavaScript 額外的在服務端有一席之地,并且這方面正在發展。雖然之前 JavaScript 在服務端有一些企圖,但是卻沒有一個像 Node.js 或者 Node 這樣吸人眼球。

什么是 Node.js

Node.js 是一門開源的,跨平臺開發的服務器端和網絡應用。 Node.js 應用使用 JavaScript 開發的,并且這些應用可以在 OS X, Microsoft Windows, Linux, FreeBSD, NonStop 和 IBM 的 Node.js 運行環境里面。

目的

為了幫助開發者構建適應性強的系統, Node 是一個為開發者打開了一個全興領域的用 JavaScript 寫的服務器端開發環境。對于一些 Java 開發者來說,Node 最大的好處就是它的簡單的可以解決程序高并發問題的方法。

雖然 Java 平臺持續的開發它的解決高并發的方式(極大的在 Java 7 和 Java 8里面得到了提高),但是重要的事實就是它滿足了一個特殊的需求,并且很多 JavaScript 開發者都在投入它的懷抱。

就像客戶端的 JavaScript 腳本,在 Node 環境下面的服務器端腳本在工作上是如此的棒,并且它工作在很多 Java 開發者工作的領域。

在這篇文章中,我們首先會以一個是什么讓 Node 如此杰出的結構化的大綱開始,在那之后,我們會展示可以迅速開發一個可擴展的 web 應用的行業標準,這個行業標準影響了 MongoDB 的信息產業。作為讀者,你可以發現 Node 是如此有趣,并且開發一個可工作的 web 應用需要多少時間。

為什么 Node.js 是如此流行?

所有的科技巨頭熱愛 Node.js 有很多原因。越來越多的應用正在用 Node.js 開發,并且正在被行業所采納。這里有一些明顯的 Node.js 流行的原因。

1.易于學習

Node.js 是一個非常容易學習的環境。它是基于 JavaScript 構建的,因此開發者主要集中在學習 JavaScript 編程上面。

很多 JavaScript 開發者可以簡單的進行自學。與此同時,這里有很多為初學者準備的好的 Node.js 圖書。

對于那些不懂 JavaScript 的可以在 JavaScript 教程 免費學到。初學者可以參考 好的 JavaScript 圖書。

2.Node.js 支持跨平臺開發

Node.js 可以在主流操作系統上運行,包括 Linux, Windows 和 Mac OSX。一個簡單的安裝就可以適應所有環境。

3.Node.js 的可測量性和高性能

一個快速的采納 Node.js 的主要的原因就是因為它在生產系統上面的性能。很多高流量的系統就是用 Node.js 寫的。像 Paypal 和 Walmart 這樣的公司已經宣稱他們的 Node.js 應用在高流量的時候的表現非常好。

4.Node 的事件驅動并發

Node 是一個基于谷歌的 V8 JavaScript 引擎的事件驅動I/O環境。 在運行之前 Google V8 真的與 JavaScript 放進本地機器碼,帶來了驚人的快速運行時執行 - 一些不適通常與 JavaScript 相關聯的。因此,Node 可以讓你迅速的構建快速并且支持高并發的網絡應用。

事件驅動 I/O 對于 Java 開發者來說可能有一些遙遠,但是這不是最新的。不是我們在 Java 里面使用的多線程編程模型,Node 解決高并發的方式是單線程,只需要額外的事件循環。這讓 Node 可以無阻塞或者異步 I/O。在 Node 里面,經常阻塞的調用,比如說,等待數據庫查詢結果,不會發生。

Node 需要一個回調,而不是為了完成一個高耗費的任務。當一個數據被返回的時候,聯合的回調會被非高并發的調用。

高并發會在 Node 程序里面起作用。如果我需要在 Java 平臺上面運行過去的數據,我會考慮我的決定的復雜度和延長的方法 -- 從通常的線程到 Java NIO 里面的刷新的類庫,甚至提高并且重新設計的 java.util.concurrent 包。

雖然 Java 可以實現高并發,但是它在代碼上面非常難理解。Node 的回調系統,是與語言結合在一起的,你并不需要像 synchronized 這樣特殊的構造器來讓它工作。Node 的并發模型是驚人的簡單,這讓更大范圍的開發者可以接觸到它。

5.更好的能力和保持力

雖然你可以找到成千上萬的 Java 開發者,但是 Node.js 的開發者并不匱乏。Node.js 在最好的自由職業者網站上面有很多。

6.更強大的生產力

因為 Node.js 是既用于服務器端和客戶端的開發,它的開發也更加快速和穩定。一個 JavaScript 開發者可以理解并且從頭到尾的開發一個應用,而不需要擔心服務端與客戶端之間的復雜的一層關系。 一個基于 Java 的應用可能仍然需要一個 JavaScript 開發者去豐富用戶界面,并且從更深層次上說可能需要 JavaScript 開發者和 Java 開發者之間的溝通交流。

7.活躍的社區

Node.js 社區非常活躍,并且快速幫助在流行的論壇和討論組里面總是可以獲到。Stackoverflow 有超過 80K 的問題,并且很少有問題是沒有被回答的。

8.很多有用的開發者工具

因為 Node.js 主要是 JavaScript ,因此為它找開發工具非常簡單。有很多支持 JavaScript 的 IDE 和開發者工具可以用來寫 Node.js。 JavaScript 可以被瀏覽器解析,因此很多基于云服務的 JavaScript IDE 可以用來在線開發和調試 Node.js。

9.簡單的 Node.js 主機

雖然你可以選擇一個專注的主機服務商并且可以簡單的搭建你自己的 Node.js 環境,但是有很多你可以簡單的安裝 Node.js 環境的主機提供商。這些提供商已經有一個基本的為 Node.js 應用的安裝步驟,這可以讓你快速開始你的業務。 這里有一個支持 Node.js 的主機提供商列表。

為什么選擇 Node.js?

Java 平臺在大企業開發里面的高并發服務占據主導地位,這一點有可能不會改變。像 Netty (和 Gretty)的框架,像 NIO 和 java.util.concurrent 這樣的類庫,已經在 JVM 的高并發部分占據地位。

關于 Node 很奇特的一點就是它是一個專門為解決同步編程困難的流開發環境。Node 的事件驅動編程模型告訴你你需要為了同步工作而與其他額外的類庫打交道,這對于開發者來說是一件振奮人心的消息。

我們在哪里可以用到 Node.js?

在很多應用場景 Node.js 可以工作得比傳統的服務器端編程語言要好,比如 Java 或者 PHP。Node.js 主要的好處就是客戶端與服務器端之間兩端的連接。這讓與服務器端有很少交互的豐富的客戶端應用使用 Node.js 成為一個流行的選擇。

如果你想創建一個在頁面上面有很多種類型的數據格式和組件的面板應用,Node.js 可能是一個很好的選擇。一些 Node.js 運行的很好的實用的應用如下。

展示一個股票市場的面板

監控開發管理的面板

一個在網頁上的直播網絡目標系統

生產系統監控面板

聊天室應用

基于 JSON 和 NOSQL 數據庫的應用

需要和移動設備和原生應用交互的應用

需要和互聯網進行交互的應用

我們在哪些地方不需要使用 Node.js?

就像其他事物一樣,Node.js 并不是適合解決你的所有的問題。下面的一些系統使用 Node.js 可能并不是一個好的選擇。

需要大量計算和大量消耗 CPU 的應用

與關系型數據庫(如 Oracle, MySQL 或者 Postgress)交互的應用

總結

Node 的 JavaScript 的語言結構當然會讓你遠離鍵盤。只需要一點代碼,你就可以制造一個快速的,通用的 web 應用。

你可以在 Java 平臺上面做到那一點,但是你需要更多行的代碼和額外的類庫和開發。并且,以防止你在研究其他編程環境時被惹怒,請不要這樣以為:你知道一些 JavaScript 的話,Node 就非常簡單。我敢打賭你會這樣做。

文章來源極客學院,譯者:王韜懿

原文作者:Sachin FromDev

文章鏈接:http://wiki.jikexueyuan.com/project/wiki-journal-201507-1/node-js.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!