首页 > 编程语言 >NodeJs 学习笔记

NodeJs 学习笔记

时间:2024-07-26 10:52:51浏览次数:17  
标签:Node NodeJs 阻塞 笔记 js 学习 循环 事件 回调

Node.js 是一个基于 Chrome V8 JavaScript 引擎的开源运行环境,用于开发服务器端和网络应用。Node.js 允许开发者使用 JavaScript 编写命令行工具和服务器端的应用程序,并且可以无缝地在从服务器到桌面应用再到移动设备的各种环境中运行。

Node.js 的核心原理包括:

  1. 事件驱动

    • Node.js 采用事件驱动模型,这意味着它在处理 I/O 操作时不会阻塞线程等待响应。相反,它会异步地执行这些操作,并通过回调函数或者事件通知结果。
  2. 单线程与多线程

    • Node.js 在主线程中执行 JavaScript 代码,这个线程负责处理所有非阻塞 I/O 请求。对于计算密集型任务或阻塞 I/O 操作,Node.js 可以创建额外的线程(例如 Worker 线程)来处理。
  3. 非阻塞 I/O

    • Node.js 设计为支持非阻塞 I/O 操作,这意味着 I/O 请求(如文件读写、网络通信等)可以在不等待响应的情况下发出。当操作完成时,Node.js 会通过回调函数通知结果,从而避免了长时间阻塞主线程。
  4. 事件循环

    • Node.js 的事件循环是其架构的核心部分。它负责监听已完成的 I/O 操作,并将控制权交还给相应的回调函数。事件循环管理着调用栈和异步回调队列。
  5. 异步 API

    • Node.js 提供了一组异步 API,允许开发者编写非阻塞代码。这些 API 包括文件系统操作、网络请求等。
  6. 模块化

    • Node.js 支持模块化编程,允许开发者组织和重用代码。Node.js 自带了许多内置模块,同时社区也提供了大量的第三方模块。

Node.js 的执行流程简述:

  1. 加载和编译

    • 当启动 Node.js 应用程序时,它会加载并编译 JavaScript 文件到可执行的字节码。
  2. 初始化事件循环

    • 初始化事件循环,准备处理事件和回调。
  3. 执行应用程序代码

    • 执行应用程序的主入口点,通常是 index.js 或 app.js 这样的文件。
  4. 处理 I/O 操作

    • 对于 I/O 请求,Node.js 会将其传递给操作系统进行处理,并将回调添加到事件队列中。
  5. 事件循环处理

    • 事件循环检查是否有任何已完成的操作需要处理,并调用相应的回调函数。
  6. 结束

    • 当没有更多的事件或回调要处理时,事件循环结束,应用程序退出。

Node.js 的这种设计使得它非常适合构建高性能、可伸缩的网络应用程序和服务。

标签:Node,NodeJs,阻塞,笔记,js,学习,循环,事件,回调
From: https://www.cnblogs.com/PrintY/p/18324842

相关文章

  • Mac开发基础02-学习指南
    对于iOS开发者转型成为macOS开发者,以下是一个详细的学习步骤指南。这个过程主要包括了解macOS特有的概念和技术、学习AppKit框架以及熟悉macOS设计准则等关键步骤。1.理解macOS与iOS的区别用户界面与交互:macOS允许更复杂的用户交互,包含鼠标操作、右键点击、拖拽等,而这些在iO......
  • 易基因:通过cfDNA甲基化和半甲基化分析结合机器学习检测多癌种生物标志物
    大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。癌症是全球主要的公共卫生威胁,虽然癌症死亡率自1991年达到顶峰以来持续下降,但仅在2021年,美国就有超过60万人死于癌症。2020年,全球有近1000万人死于癌症,近年来一些低收入和中等收入国家的死亡率有所上升。因此,抗......
  • 进制转换(学习)
    进制也就是进位计数制,是人为定义的带进位的计数方法(有不带进位的计数方法,比如原始的结绳计数法,唱票时常用的“正”字计数法,以及类似的tallymark计数),我们这里讲的是带进位的计数方法。 对于任何一种进制---X进制,就表示每一位上的数运算时都是逢X进一位。十进制是逢十进一,十......
  • 《昇思 25 天学习打卡营第 23 天 | 基于MindSpore的GPT-2文本摘要 》
    《昇思25天学习打卡营第23天|基于MindSpore的GPT-2文本摘要》活动地址:https://xihe.mindspore.cn/events/mindspore-training-camp签名:Sam9029概述文本摘要任务旨在从给定的文本中生成简短的摘要,同时保留关键信息。本案例使用MindSpore框架实现基于GPT-2模型......
  • 机器学习大模型:引领未来趋势,探索无限应用
    文章目录......
  • 整理的比较全面的C语言入门笔记!
    c语音在线教程:54笨鸟C语言一经出现就以其功能丰富、表达能力强、灵活方便、应用面广等特点迅速在全世界普及和推广。C语言不但执行效率高而且可移植性好,可以用来开发应用软件、驱动、操作系统等。C语言也是其它众多高级语言的鼻祖语言,所以说学习C语言是进入编程世界的必修课。......
  • C#学习-------成员
    在面向对象编程(OOP)中,成员是类或对象所包含的属性、方法、事件、字段等的统称。它们定义了类的行为和状态。C#中的成员有以下几种类型:1.字段(Fields)字段是类中的变量,用于存储对象的状态。字段可以是实例字段(属于对象的每个实例)或静态字段(属于类本身)。publicclassPerson{......
  • Manim 学习笔记(二)--文本测试
    文本测试--效果:代码:#-*-coding:utf-8-*-frommanimimport*classTransformExample(Scene):defconstruct(self):banner=ManimBanner()banner.shift(UP*0.5)self.play(banner.create(),run_time=1)self.play(banner.anima......
  • Manim 学习笔记(三)--坐标系与坐标平面
    坐标系与坐标平面--效果:代码:#-*-coding:utf-8-*-frommanimimport*classZBX_ZBPM(Scene):defconstruct(self):#坐标平面(网格)my_plane=NumberPlane(faded_line_ratio=2,x_range=[-8,8,1],#[前两个参数的......
  • Manim 学习笔记(一)--常用的几个函数和操作
    常用的一些操作【注:随版本升级,有些操作和指令会有改动】frommanimimport*从manim中导入了需要用到的模块classHello_World(Scene)创建一个继承自Scene的一个类;defconstruct(self)construct方法对于manim很特殊,manim调用这个方法来创建动画。所以基本上......