摘要:如果不熟悉这种语言,有一篇关于阻塞与非阻塞的完整文章。在设计上与的或的等系统类似,并受其影响,进一步采用事件模型。它将事件循环呈现为运行时构造而不是库,在其他系统中,始终存在阻塞调用以启动事件循环。上一篇指南目录下一篇入门指南
关于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 指南(目录) 下一篇:入门指南文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/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... ...
阅读 800·2023-04-26 00:37
阅读 684·2021-11-24 09:39
阅读 2109·2021-11-23 09:51
阅读 3720·2021-11-22 15:24
阅读 680·2021-10-19 11:46
阅读 1843·2019-08-30 13:53
阅读 2313·2019-08-29 17:28
阅读 1287·2019-08-29 14:11