node详细介绍

89 阅读3分钟

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

同步和同步的问题解决

参考: www.lilichao.com/index.php/2…

  • 什么是同步:

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

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

    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")