摘要:如果不熟悉這種語言,有一篇關于阻塞與非阻塞的完整文章。在設計上與的或的等系統類似,并受其影響,進一步采用事件模型。它將事件循環呈現為運行時構造而不是庫,在其他系統中,始終存在阻塞調用以啟動事件循環。上一篇指南目錄下一篇入門指南
關于Node.js
作為異步事件驅動的JavaScript運行時,Node旨在構建可伸縮的網絡應用程序,在下面的“hello world”示例中,可以同時處理許多連接,在每次連接時都會觸發回調,但是如果沒有工作要做,Node將會休眠。
const http = require("http"); const hostname = "127.0.0.1"; const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader("Content-Type", "text/plain"); res.end("Hello World "); }); server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); });
這與目前使用OS線程的更常見的并發模型形成對比,基于線程的網絡效率相對較低且非常難以使用,此外,Node的用戶不必擔心死鎖,因為沒有鎖。Node中幾乎沒有任何函數直接執行I/O,因此進程永遠不會阻塞,由于沒有任何阻塞,可擴展系統在Node中開發非常合理。
如果不熟悉這種語言,有一篇關于阻塞與非阻塞的完整文章。
Node在設計上與Ruby的Event Machine或Python的Twisted等系統類似,并受其影響,Node進一步采用事件模型。它將事件循環呈現為運行時構造而不是庫,在其他系統中,始終存在阻塞調用以啟動事件循環。通常,行為是通過腳本開頭的回調來定義的,最后通過阻塞調用來啟動服務器,如EventMachine::run()。Node在執行輸入腳本后簡單地進入事件循環,當沒有更多回調要執行時,Node退出事件循環,此行為類似于瀏覽器JavaScript — 事件循環對用戶隱藏。
HTTP是Node中的一等公民,設計時考慮了流媒體和低延遲,這使得Node非常適合Web庫或框架的基礎。
僅僅因為Node沒有線程設計,并不意味著你無法利用環境中的多個核心優勢,子進程可以通過使用我們的child_process.fork() API生成,并且設計為易于與之通信,基于相同的接口構建的是群集模塊,它允許你在進程之間共享sockets,以便在核心上實現負載平衡。
上一篇:Node.js 指南(目錄) 下一篇:入門指南文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/108576.html
Node.js 指南 Node.js?是基于Chrome的V8 JavaScript引擎構建的JavaScript運行時。 常規 關于Node.js 入門指南 輕松分析Node.js應用程序 Docker化Node.js Web應用程序 遷移到安全的Buffer構造函數 Node.js核心概念 阻塞與非阻塞概述 Node.js事件循環、定時器和process.nextTick() 不要阻塞事...
摘要:調試指南本指南將幫助你入門調試應用程序和腳本。這樣做可能會給你帶來潛在的重大安全威脅,我們建議你確保適當的防火墻和訪問控制措施,以防止安全風險。不再維護或記錄調試協議。 入門指南 安裝Node之后,讓我們嘗試構建我們的第一個Web服務器,創建名為app.js的文件,并粘貼以下代碼: const http = require(http); const hostname = 127.0....
摘要:標準庫中的所有方法都提供非阻塞的異步版本,并接受回調函數,某些方法還具有對應的阻塞方法,其名稱以結尾。比較代碼阻塞方法同步執行,非阻塞方法異步執行。 阻塞與非阻塞概述 此概述介紹了Node.js中阻塞與非阻塞調用之間的區別,此概述將引用事件循環和libuv,但不需要事先了解這些主題,假設讀者對JavaScript語言和Node.js回調模式有基本的了解。 I/O主要指與libuv支持的...
摘要:博客地址這篇文章是我在眾成翻譯翻譯的一篇文章,一篇的入門指南,原文鏈接的出現使得用寫服務端應用成為可能。你可以看到,這個過程也安裝了其他的模塊,它們都是的所依賴的模塊。但是,得到的輸出信息會很冗長,我們可以加上來精簡一下輸出。 github 博客地址: https://github.com/zengxiaota... 這篇文章是我在 眾成翻譯 翻譯的一篇文章,一篇 npm 的入門指南,...
摘要:將如下代碼寫入到文件中,并在環境里執行如圖雖然這兩個輸出看起來可能一樣,但系統實際上對它的處理方式有不同。如圖如果你沒有啟動調試日志,則不會看到任何這樣的日志輸出。 原文地址: https://www.twilio.com/blog/g...原文作者: DOMINIK KUNDEL 翻譯作者: icepy 翻譯出處: https://github.com/lightningm... ...
閱讀 821·2023-04-26 00:37
閱讀 706·2021-11-24 09:39
閱讀 2132·2021-11-23 09:51
閱讀 3768·2021-11-22 15:24
閱讀 734·2021-10-19 11:46
閱讀 1868·2019-08-30 13:53
閱讀 2410·2019-08-29 17:28
閱讀 1314·2019-08-29 14:11