• Nodejs初识


    nodejs官网
    nodejs中文文档1
    nodejs中文文档2

    什么是Node.js

    1. Node.js 是一个基于 Chrome V8 引擎 的 Js 运行环境
    2. Node.js使用了一个事件驱动,非阻塞式I/O的模型,使其轻量又高效。

    Node.js 运行的js和Chrome运行的js有什么不同?

    1. 几乎一样
    2. 不一样的地方在哪里?
      1. Node.js没有浏览器API,即document,window等。
      2. 加了许多Node.js API
    3. 对于开发者来说,Node.js:
      1. 你在Chrome里写JavaScript控制浏览器。
      2. Node.js让你用类似的方式,控制整个计算机。

    关于 Node.js®

    作为一个异步事件驱动的 JavaScript 运行时,Node.js 被设计用来构建可扩展的网络应用。在下面的 “Hello World” 示例中,可以并发处理许多连接,每一个连接都会触发一个回调,而当没有可做的事情时,Node.js 就会进入休眠状态。

    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}/`);
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    这与当今比较常见的采用操作系统线程的并发模型形成了鲜明对比。基于线程的网络效率相对较低且更难以使用。此外,由于没有锁,Node.js 的用户不用担心进程死锁的问题。Node.js 中几乎没有函数直接执行 I/O 操作(除非你使用 Node.js 标准库中的同步函数版本),其进程从不会被阻塞,因此用 Node.js 来开发可扩展系统是非常合理的。

    如果你对上面的描述有一些不理解地方,这里有一篇专门关于阻塞对比非阻塞的文章供你参考。


    Node.js 在设计上类似于 RubyEvent Machine 或 Python 的 Twisted 之类的系统。但 Node.js 更深入地考虑了事件模型,它将事件循环作为一个运行时结构而不是作为一个库来呈现。在其他系统中,总是有一个阻塞调用来启动事件循环。通常情况下,要执行的行为是通过脚本开始时的回调来定义的,然后通过 EventMachine::run() 这样的阻塞调用来启动服务器。而在 Node.js 中,没有这种启动事件循环的调用。Node.js 在执行输入脚本后直接进入事件循环,当没有更多的回调要执行时,Node.js 就会退出事件循环。这种行为就像浏览器的 JavaScript 一样 —— 事件循环对用户是隐藏的。

    HTTP 是 Node.js 中的一等公民,设计时考虑到了流式和低延迟,这使得 Node.js 非常适合作为网络库或框架的基础。

    Node.js 被设计成单线程运行,但这并不意味着你无法利用到 CPU 的多个核心。你可以通过 child_process.fork() API 来生成子进程,并且它被设计成非常易于通信。而建立在同一个接口之上的 cluster 模块允许你在进程之间共享套接字(sockets),以实现核心的负载均衡。

    API 函数接口文档

    API 函数接口文档 提供了在 Node.js 中的函数或者对象的详细信息。这个文档告诉你什么方法该用什么参数,方法返回值是什么以及使用那个方法会有什么错误异常。它同时也告知你不同版本中的 Node.js 有哪些方法是可用的。

    此文档描述了 Node.js 内建的模块,社区提供的模块并不记载在内。

    在寻找先前发布的 API 函数接口文档吗?

  • 相关阅读:
    行业追踪,2023-10-27
    DevOps敏捷转型常见误区及避坑指南
    Golang版本处理Skywalking Trace上报数据
    8月刚入职字节跳动的测试开发面试题,附答案
    287. 寻找重复数
    aijs 遍历字典
    CVE-2021-44548 Apache Solr 敏感信息泄露漏洞分析及复现
    回Mixlab三天,“创造力团队”治好了我的精神内耗
    windows10/11子系统安装ubuntu22.04
    查看虚拟机ip地址
  • 原文地址:https://blog.csdn.net/formylovetm/article/details/126506801