node详细介绍

node.js

node.js的介绍

  • 运行在服务器的JS

  • 用来编写服务器

  • 特点:

    • 单线程、异步、非阻塞

    • 统一API

##同步与异步

进程和线程

  • 进程 (厂房)

    • 程序的运行环境
  • 线程 (工人)

    • 线程是实际进行运算的东西
  • 同步

    • 通常情况代码都是自上向下一行一行执行的
    • 前边的代码不执行后边的代码也不会执行
    • 同步的代码执行会出现阻塞的情况
  • 解决同步问题

    • java python
      - 通过多线程解决
    • node.js
      - 通过异步方式解决
  • 异步
    一段代码的执行不会影响其他代码的执行

    • 异步的问题:
      异步的代码无法通过return接收返回值

    • 特点:

      1. 不会阻塞其他代码的执行

        1. 需要通过回调函数来返回结果
    • 基于回调函数的异步带来的问题
      1. 代码的可读性差
      2. 可调试性差

    • 解决问题:
      - 需要一个东西,可以代替回调函数来给我们返回结果

           - Promise横空出世
               
               Promise是一个可以用来存储数据的对象
               Promise存储数据的方式比较特殊,这种特殊方式使得Promise可以用来存储异步调用的数据
      
  • 现实生活
    1.点菜
    2.厨师做菜
    3.吃

进程和线程

  • 进程就是一个内存空间,是程序运行的环境,程序运行需要进程
  • 线程是实际进行运算的东西,也就是程序要真正运行起来需要线程
  • 线程会进入到进程里运行

node.js 和 JavaScript有什么区别?

  • node和JS的标准是一样的,遵循的都是ECMAScript

  • DOM BOM 是浏览器独有的,node没有DOM BOM

同步和同步的问题解决

参考: https://www.lilichao.com/index.php/2022/10/10/%e5%bc%82%e6%ad%a5%e7%bc%96%e7%a8%8b/

  • 什么是同步:

    • 通常情况代码都是自下而上一行一行按顺序执行的,执行完第一行再执行第二行依次执行,如果前面的代码不执行,后面的代码也不会执行,这就是同步.

    • 同步的代码执行会出现阻塞的情况,一行代码执行得慢会影响整个程序的执行

    console.log("哈哈")
    console.log("嘻嘻")
    console.log("嘿嘿")
    
  • 同步阻塞问题的解决:

    • Java 和 python: 通过多线程来解决阻塞问题,对计算机和编程的要求较高

    • node.js:通过异步方式来解决这一问题. 执行速度慢的代码不影响真个程序.

异步

  • 什么是异步?可理解为一段代码的执行不会影响到其他的程序

  • 异步的问题:异步代码的执行结果无法通过return获得

  • 异步的特点:

    • 不会阻塞其他代码的执行

    • 需要通过回调函数来返回结果

  • 基于回调函数的异步带来的问题:

    • 代码的可读性差

    • 代码的可调试性差

    • 产生回调地狱的问题

  • 解决回调地狱的问题

    • 需要一个可以代替回调函数来给我们返回结果的东西

    • 这个东西就是promise

      • promise是一个可以用来存储数据的对象,它存储数据的方式比较特殊,取数据的方式也比较特殊

      • 这种特殊方式使得promise可以用来存储异步调用的数据

      • promise就是可以存储异步代码的对象

function sum(a,b,cb){ // cb是一个回调函数
  const begin = Date.now()

  setTimeout(()=>{
    cb(a + b)
   },1000)
}
console.log("1111111")

sum(123, 456,()=>{
  console.log(result)
})
console.log("222222")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值