在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ 產(chǎn)品經(jīng)理/ 為什么是 Node.js ? 什么時(shí)候使用 Node.js ?
5 個(gè)提示助你設(shè)計(jì)出精妙的 Apple Watch 應(yīng)用軟件
如何使用安卓密鑰庫(kù)存儲(chǔ)密碼和其他敏感信息
從 HDFS 中使用分布式的 MAP REDUCE JOB 寫(xiě)入 CASSANDRA
現(xiàn)代 Javascript 工具漫游指南
理解 Cassandra 壓縮儲(chǔ)存的作用
不懂 JavaScript?那你就不是一個(gè) Web 開(kāi)發(fā)者
如何開(kāi)發(fā)一個(gè)簡(jiǎn)單的 Android Wear 應(yīng)用程序
Angular 與 React 的比拼
谷歌加入 OpenStack 基金會(huì)的 4 個(gè)理由
15個(gè)很有用的面向設(shè)計(jì)師的 UI 和 UX 設(shè)計(jì)工具及資源
DevTools 摘要: 處理?xiàng)l帶化數(shù)據(jù)時(shí)給條帶化數(shù)據(jù)的一個(gè)新家
為什么是 Node.js ? 什么時(shí)候使用 Node.js ?
玩轉(zhuǎn) Dcoker:Hello World, 開(kāi)發(fā)環(huán)境和你的應(yīng)用
運(yùn)行時(shí)的掛鉤 C 函數(shù)
在游戲開(kāi)發(fā)中獲得成功
在 iOS 開(kāi)發(fā)中使用 TWITTERKIT & DIGITS
使用 ionic 將數(shù)據(jù)保存到本地存儲(chǔ)中
20 個(gè)有用的 Angular.js 工具
如何成為一個(gè)超級(jí)軟件開(kāi)發(fā)者
用 Go 語(yǔ)言來(lái)看 Android! 出發(fā), Android, 出發(fā)!

為什么是 Node.js ? 什么時(shí)候使用 Node.js ?

文章翻譯:王韜懿
發(fā)表時(shí)間:2015 年 7 月 03 日
原文作者:Sachin FromDev
文章分類:后端開(kāi)發(fā)

關(guān)于本文

對(duì)于服務(wù)器端開(kāi)發(fā)語(yǔ)言來(lái)說(shuō),Java 和 PHP 可能是現(xiàn)在的企業(yè)用的最多的了。但是,Node.js 作為一門(mén) Javascript 里面的服務(wù)器端語(yǔ)言在高并發(fā)方面的表現(xiàn)卻不亞于用 Java 開(kāi)發(fā)的企業(yè)級(jí)應(yīng)用。國(guó)內(nèi)國(guó)外的一些大型公司都逐漸的在將自己的應(yīng)用使用 Node 構(gòu)建,淘寶里面的一些模塊就是很好的例子。本文將要介紹 Node.js 的一些基礎(chǔ)知識(shí)和應(yīng)用場(chǎng)景。

文章內(nèi)容

學(xué)習(xí)什么是 Node.js ? 為什么它會(huì)這么受歡迎 ?你可以在哪些地方用到它?

想一下為什么 Node.js 越來(lái)越受歡迎了?什么時(shí)候使用 Node.js ?這篇文章有你想要的所有關(guān)于 Node.js 框架和最好的在社區(qū)實(shí)踐的一切細(xì)節(jié)。

Node.js 通過(guò)用單線程取代多線程,事件驅(qū)動(dòng) I/O 來(lái)解決了高并發(fā),取代了 Java 平臺(tái)的標(biāo)準(zhǔn)。在這篇文章中,我們將討論 Node.js 并且會(huì)闡明為什么事件驅(qū)動(dòng)并發(fā)會(huì)如此的受歡迎,甚至包括一些核心的 Java 開(kāi)發(fā)者。

我們等會(huì)兒會(huì)向你介紹一些 Node.js 最好的實(shí)踐來(lái)讓你使用 Node’s Express 框架,Mongolian DeadBeef 和 MongoDB 來(lái)做一個(gè)即時(shí)的,可擴(kuò)展的,并且持久化的 web 應(yīng)用。

一些歷史背景

在過(guò)去的一些年里面, JavaScript 已經(jīng)成為了一個(gè)“黑暗騎士”,有點(diǎn)像是 web 開(kāi)發(fā)的傳奇。但是事實(shí)卻讓很多過(guò)去說(shuō) JavaScript 是一門(mén) “玩具語(yǔ)言” 的 web 應(yīng)用開(kāi)發(fā)者感到驚訝。

雖然有很多知名的語(yǔ)言,但是 JavaScript 作為標(biāo)準(zhǔn)的,瀏覽器中的腳本語(yǔ)言卻讓它保持主流地位。對(duì)于網(wǎng)站客戶端的開(kāi)發(fā),它可是全球用得最廣泛的語(yǔ)言。

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

什么是 Node.js

Node.js 是一門(mén)開(kāi)源的,跨平臺(tái)開(kāi)發(fā)的服務(wù)器端和網(wǎng)絡(luò)應(yīng)用。 Node.js 應(yīng)用使用 JavaScript 開(kāi)發(fā)的,并且這些應(yīng)用可以在 OS X, Microsoft Windows, Linux, FreeBSD, NonStop 和 IBM 的 Node.js 運(yùn)行環(huán)境里面。

目的

為了幫助開(kāi)發(fā)者構(gòu)建適應(yīng)性強(qiáng)的系統(tǒng), Node 是一個(gè)為開(kāi)發(fā)者打開(kāi)了一個(gè)全興領(lǐng)域的用 JavaScript 寫(xiě)的服務(wù)器端開(kāi)發(fā)環(huán)境。對(duì)于一些 Java 開(kāi)發(fā)者來(lái)說(shuō),Node 最大的好處就是它的簡(jiǎn)單的可以解決程序高并發(fā)問(wèn)題的方法。

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

就像客戶端的 JavaScript 腳本,在 Node 環(huán)境下面的服務(wù)器端腳本在工作上是如此的棒,并且它工作在很多 Java 開(kāi)發(fā)者工作的領(lǐng)域。

在這篇文章中,我們首先會(huì)以一個(gè)是什么讓 Node 如此杰出的結(jié)構(gòu)化的大綱開(kāi)始,在那之后,我們會(huì)展示可以迅速開(kāi)發(fā)一個(gè)可擴(kuò)展的 web 應(yīng)用的行業(yè)標(biāo)準(zhǔn),這個(gè)行業(yè)標(biāo)準(zhǔn)影響了 MongoDB 的信息產(chǎn)業(yè)。作為讀者,你可以發(fā)現(xiàn) Node 是如此有趣,并且開(kāi)發(fā)一個(gè)可工作的 web 應(yīng)用需要多少時(shí)間。

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

所有的科技巨頭熱愛(ài) Node.js 有很多原因。越來(lái)越多的應(yīng)用正在用 Node.js 開(kāi)發(fā),并且正在被行業(yè)所采納。這里有一些明顯的 Node.js 流行的原因。

  • 易于學(xué)習(xí)

    Node.js 是一個(gè)非常容易學(xué)習(xí)的環(huán)境。它是基于 JavaScript 構(gòu)建的,因此開(kāi)發(fā)者主要集中在學(xué)習(xí) JavaScript 編程上面。

    很多 JavaScript 開(kāi)發(fā)者可以簡(jiǎn)單的進(jìn)行自學(xué)。與此同時(shí),這里有很多為初學(xué)者準(zhǔn)備的好的 Node.js 圖書(shū)。

    對(duì)于那些不懂 JavaScript 的可以在 JavaScript 教程 免費(fèi)學(xué)到。初學(xué)者可以參考 好的 JavaScript 圖書(shū)。

  • Node.js 支持跨平臺(tái)開(kāi)發(fā)

    Node.js 可以在主流操作系統(tǒng)上運(yùn)行,包括 Linux, Windows 和 Mac OSX。一個(gè)簡(jiǎn)單的安裝就可以適應(yīng)所有環(huán)境。

  • Node.js 的可測(cè)量性和高性能

    一個(gè)快速的采納 Node.js 的主要的原因就是因?yàn)樗谏a(chǎn)系統(tǒng)上面的性能。很多高流量的系統(tǒng)就是用 Node.js 寫(xiě)的。像 Paypal 和 Walmart 這樣的公司已經(jīng)宣稱他們的 Node.js 應(yīng)用在高流量的時(shí)候的表現(xiàn)非常好。

  • Node 的事件驅(qū)動(dòng)并發(fā)

    Node 是一個(gè)基于谷歌的 V8 JavaScript 引擎的事件驅(qū)動(dòng)I/O環(huán)境。 在運(yùn)行之前 Google V8 真的與 JavaScript 放進(jìn)本地機(jī)器碼,帶來(lái)了驚人的快速運(yùn)行時(shí)執(zhí)行 - 一些不適通常與 JavaScript 相關(guān)聯(lián)的。因此,Node 可以讓你迅速的構(gòu)建快速并且支持高并發(fā)的網(wǎng)絡(luò)應(yīng)用。

    事件驅(qū)動(dòng) I/O 對(duì)于 Java 開(kāi)發(fā)者來(lái)說(shuō)可能有一些遙遠(yuǎn),但是這不是最新的。不是我們?cè)?Java 里面使用的多線程編程模型,Node 解決高并發(fā)的方式是單線程,只需要額外的事件循環(huán)。這讓 Node 可以無(wú)阻塞或者異步 I/O。在 Node 里面,經(jīng)常阻塞的調(diào)用,比如說(shuō),等待數(shù)據(jù)庫(kù)查詢結(jié)果,不會(huì)發(fā)生。

    Node 需要一個(gè)回調(diào),而不是為了完成一個(gè)高耗費(fèi)的任務(wù)。當(dāng)一個(gè)數(shù)據(jù)被返回的時(shí)候,聯(lián)合的回調(diào)會(huì)被非高并發(fā)的調(diào)用。

    高并發(fā)會(huì)在 Node 程序里面起作用。如果我需要在 Java 平臺(tái)上面運(yùn)行過(guò)去的數(shù)據(jù),我會(huì)考慮我的決定的復(fù)雜度和延長(zhǎng)的方法 -- 從通常的線程到 Java NIO 里面的刷新的類庫(kù),甚至提高并且重新設(shè)計(jì)的 java.util.concurrent 包。

    雖然 Java 可以實(shí)現(xiàn)高并發(fā),但是它在代碼上面非常難理解。Node 的回調(diào)系統(tǒng),是與語(yǔ)言結(jié)合在一起的,你并不需要像 synchronized 這樣特殊的構(gòu)造器來(lái)讓它工作。Node 的并發(fā)模型是驚人的簡(jiǎn)單,這讓更大范圍的開(kāi)發(fā)者可以接觸到它。

  • 更好的能力和保持力

    雖然你可以找到成千上萬(wàn)的 Java 開(kāi)發(fā)者,但是 Node.js 的開(kāi)發(fā)者并不匱乏。Node.js 在最好的自由職業(yè)者網(wǎng)站上面有很多。

  • 更強(qiáng)大的生產(chǎn)力

    因?yàn)?Node.js 是既用于服務(wù)器端和客戶端的開(kāi)發(fā),它的開(kāi)發(fā)也更加快速和穩(wěn)定。一個(gè) JavaScript 開(kāi)發(fā)者可以理解并且從頭到尾的開(kāi)發(fā)一個(gè)應(yīng)用,而不需要擔(dān)心服務(wù)端與客戶端之間的復(fù)雜的一層關(guān)系。 一個(gè)基于 Java 的應(yīng)用可能仍然需要一個(gè) JavaScript 開(kāi)發(fā)者去豐富用戶界面,并且從更深層次上說(shuō)可能需要 JavaScript 開(kāi)發(fā)者和 Java 開(kāi)發(fā)者之間的溝通交流。

  • 活躍的社區(qū)

    Node.js 社區(qū)非?;钴S,并且快速幫助在流行的論壇和討論組里面總是可以獲到。Stackoverflow 有超過(guò) 80K 的問(wèn)題,并且很少有問(wèn)題是沒(méi)有被回答的。

  • 很多有用的開(kāi)發(fā)者工具

    因?yàn)?Node.js 主要是 JavaScript ,因此為它找開(kāi)發(fā)工具非常簡(jiǎn)單。有很多支持 JavaScript 的 IDE 和開(kāi)發(fā)者工具可以用來(lái)寫(xiě) Node.js。 JavaScript 可以被瀏覽器解析,因此很多基于云服務(wù)的 JavaScript IDE 可以用來(lái)在線開(kāi)發(fā)和調(diào)試 Node.js。

  • 簡(jiǎn)單的 Node.js 主機(jī)

    雖然你可以選擇一個(gè)專注的主機(jī)服務(wù)商并且可以簡(jiǎn)單的搭建你自己的 Node.js 環(huán)境,但是有很多你可以簡(jiǎn)單的安裝 Node.js 環(huán)境的主機(jī)提供商。這些提供商已經(jīng)有一個(gè)基本的為 Node.js 應(yīng)用的安裝步驟,這可以讓你快速開(kāi)始你的業(yè)務(wù)。 這里有一個(gè)支持 Node.js 的主機(jī)提供商列表。

為什么選擇 Node.js?

Java 平臺(tái)在大企業(yè)開(kāi)發(fā)里面的高并發(fā)服務(wù)占據(jù)主導(dǎo)地位,這一點(diǎn)有可能不會(huì)改變。像 Netty (和 Gretty)的框架,像 NIO 和 java.util.concurrent 這樣的類庫(kù),已經(jīng)在 JVM 的高并發(fā)部分占據(jù)地位。

關(guān)于 Node 很奇特的一點(diǎn)就是它是一個(gè)專門(mén)為解決同步編程困難的流開(kāi)發(fā)環(huán)境。Node 的事件驅(qū)動(dòng)編程模型告訴你你需要為了同步工作而與其他額外的類庫(kù)打交道,這對(duì)于開(kāi)發(fā)者來(lái)說(shuō)是一件振奮人心的消息。

我們?cè)谀睦锟梢杂玫?Node.js?

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

如果你想創(chuàng)建一個(gè)在頁(yè)面上面有很多種類型的數(shù)據(jù)格式和組件的面板應(yīng)用,Node.js 可能是一個(gè)很好的選擇。一些 Node.js 運(yùn)行的很好的實(shí)用的應(yīng)用如下。

  • 展示一個(gè)股票市場(chǎng)的面板
  • 監(jiān)控開(kāi)發(fā)管理的面板
  • 一個(gè)在網(wǎng)頁(yè)上的直播網(wǎng)絡(luò)目標(biāo)系統(tǒng)
  • 生產(chǎn)系統(tǒng)監(jiān)控面板
  • 聊天室應(yīng)用
  • 基于 JSON 和 NOSQL 數(shù)據(jù)庫(kù)的應(yīng)用
  • 需要和移動(dòng)設(shè)備和原生應(yīng)用交互的應(yīng)用
  • 需要和互聯(lián)網(wǎng)進(jìn)行交互的應(yīng)用

我們?cè)谀男┑胤讲恍枰褂?Node.js?

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

  • 需要大量計(jì)算和大量消耗 CPU 的應(yīng)用
  • 與關(guān)系型數(shù)據(jù)庫(kù)(如 Oracle, MySQL 或者 Postgress)交互的應(yīng)用

總結(jié)

Node 的 JavaScript 的語(yǔ)言結(jié)構(gòu)當(dāng)然會(huì)讓你遠(yuǎn)離鍵盤(pán)。只需要一點(diǎn)代碼,你就可以制造一個(gè)快速的,通用的 web 應(yīng)用。

你可以在 Java 平臺(tái)上面做到那一點(diǎn),但是你需要更多行的代碼和額外的類庫(kù)和開(kāi)發(fā)。并且,以防止你在研究其他編程環(huán)境時(shí)被惹怒,請(qǐng)不要這樣以為:你知道一些 JavaScript 的話,Node 就非常簡(jiǎn)單。我敢打賭你會(huì)這樣做。

更多IT技術(shù)干貨: wiki.jikexueyuan.com
加入極客星球翻譯團(tuán)隊(duì): http://wiki.jikexueyuan.com/project/wiki-editors-guidelines/translators.html

版權(quán)聲明:
本譯文僅用于學(xué)習(xí)和交流目的。非商業(yè)轉(zhuǎn)載請(qǐng)注明譯者、出處,并保留文章在極客學(xué)院的完整鏈接
商業(yè)合作請(qǐng)聯(lián)系 wiki@jikexueyuan.com
原文地址:http://www.fromdev.com/2015/07/why-node-js-popular.html