【譯】理解node

我已經介紹過Node.js一般會引起兩種反應:人們一般會立即“理解”或者因為困惑而終止。

如果你現在已經在第二組里,請看我試著解釋node:

它是一個命令行工具。你下載一個tarball,解壓并安裝源代碼。

它允許你在終端輸入'node my_app.js'運行Javascript程序。

JS運行于V8 javascript engine(它是的Google Chrome如此之快)。

Node提供一個Javascript APT來鏈接網絡和文件系統。

“但我能用ruby, python, php, java, ... 做任何事!”

我聽到了。你是對的!對不起,Node不是來幫你做工作的奇怪的獨角獸。它只是一個工具,它可能不會完全地代替你常規的工具,至少目前不會。

"直截了當地說!"

好吧,我會的。基本上,當你需要同時做很多事的時候,Node很好。你曾經寫過一段兒代碼并說“我希望這能夠并行的運行”?好,Node里一切都是并行的運行,除了你的代碼。

"嗯?"

就是這樣,一切都是并行運行的,除了你的代碼。為了理解這點,想象你的代碼是國王,node是他的仆人軍隊。

日子是從一個仆人喚醒國王問他所需開始的。國王給這位仆人一張任務列表然后再小睡一會。這位仆人開始向他的同事們分發任務并讓他們工作。

每當一位仆人完成一份工作,當他完成一個任務,他就排列好給國王匯報。國王每次讓一名仆人進來聽他匯報。有時,當他走出去的時候國王會給他更多的的任務。

生活很美好,對于國王的仆人,他們并行地攜帶他的任務,但是同事只匯報一個結果, 這樣國王可以專注。

"那太棒了,但是你能不做愚蠢的比喻而認真的對我講嗎?

當然。一個簡單的Node程序這這樣的:

代碼

你的代碼給Node兩個任務讀寫一個文件,然后休眠。當Node完成一個任務,回調函數被觸發。但是這里只能同時運行一個回調函數。直到回調函數執行完畢之前,所有其他回調函數需要排隊等待。另外,執行任何一個回調函數是無序的。

“所以我不需要擔心代碼同時解除相同的數據?”

你明白了!這就是全部Javascript單線程/事件輪詢的精華!

"很好,但是我為什么要用他呢?"

一個原因是高效。在一個web應用中,主要的響應花費在執行查詢數據庫。使用Node,會減少響應的時間當執行最慢的查詢。

另外一個原因是JavaScript。你能在瀏覽器和服務器之間分享代碼。JavaScript也正在成為全球性的編程語言。無論你過去是否做過python, ruby, java, php...... 在過程中你可能會用到javascript,對吧?

最后一個原因就是運行速度。V8引擎在這個星球上不斷擴張他的境界。我現在 無法想到哪個語言會在速度方面對JavaScript造成威脅。另外,In addition to that, node的I/O設備非常輕量,會讓你盡可能地完全地利用你全部系統的空間。

"所以你勸說我從現在開始用node來做所有我的應用?"

可以這么說但又不是。一旦你開始揮動node的錘子,一切都看起來像個釘子。但是如果你正在做一個很緊迫的項目,你也許需要以下幾個依據來做決定:

低響應時間,高并行更重要?Node擅長于此。

項目多大? 小項目還適合。大項目應該仔細評估(多種類庫,資源用來修改問題,或者逆流而上,等等)。

"Node可以運行在windows嗎?"

不行。如果你在windows,你需要用Linux運行一個虛擬機(我推薦VirtualBox)。Windows支持node在計劃之中,除非你想幫助他,否則你得屏住呼吸等幾個月。

"在node中我能鏈接DOM嗎?"

問的非常好!答案是不行,DOM是瀏覽器的東西,node JS的運行引擎應該從那混亂中完全地分開。然而,有些人正在做這樣的事:the DOM as a node module, 這會讓許多有趣的事變成可能,比如在可以互動進行單元測試。

"事件驅動編程很難嗎?"

那就不一定了。如果你已經學會了在瀏覽器里玩AJAX的請求和響應,那么適應node應該不是問題。無論如何,測試驅動開發能幫你想到可維護的設計。

"誰在用呢?"

這里是一個小的不完全的列表node wiki(找到 "Companies using Node").Yahoo正在給YUI做node實驗Plurk正在應用于很多的comet。并且, Paul Bakaus 正在建立mind-blowing game engine一些node后端的東西。


??????? ———— 2015.10.15?摘自Debuggable,原文鏈接

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,048評論 6 542
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,414評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,169評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,722評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,465評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,823評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,813評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,000評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,554評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,295評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,513評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,035評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,722評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,125評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,430評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,237評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,482評論 2 379

推薦閱讀更多精彩內容