美文网首页
node简介

node简介

作者: jluemmmm | 来源:发表于2020-09-16 20:17 被阅读0次

    node是一个单线程、单进程的javascript运行环境。chrome浏览器与node的组成结构类似,浏览器通过事件驱动来服务界面上的交互,node通过事件驱动服务I/O,在node中,javascript可以访问本地文件,搭建websoket服务器,连接数据库,可以像web worker使用多进程。
    放一张图

    node特点

    异步I/O

    node中,文件读取和网络请求等都可以以异步的方式进行调用,每个调用之间无需等待之前的I/O调用结束

    var fs = require('fs')
    fs.readFile('/path1', function(err, file) {
      console.log('文件1读取完成')
    })
    fs.readFile('/path2', function(err, file) {
      console.log('文件2读取完成')
    })
    console.log('发起读取文件')
    //每个调用之间无需d等待之前的I/O调用结束,先输出发起读取文件,操作耗时取决于最慢的读取文件的耗时
    

    事件与回调函数

    可以将函数作为对象传递给方法作为实参进行调用。

    单线程

    单线程不会带来状态同步问题,没有死锁存在,没有线程上下文交换带来性能上的开销。存在的问题是

    • 无法利用多核CPU
    • 错误会引起整个应用退出
    • 大量计算占用CPU导致无法继续异步调用I/O

    像浏览器javascript与UI共用一个线程一样,js长时间执行会导致UI的渲染和响应被中断。在Node中,长时间CPU占用会导致后续异步I/O发不出调用,已完成的异步I/O回调函数得不到及时执行。

    WebWorker能够创建工作线程进行计算,以解决js大规模计算阻塞UI渲染的问题,工作线程为了不阻塞主线程,通过消息传递的方式传递运行结果,使得工作线程不能访问主线程的UI

    node采用相同的思路解决单线程中的大计算量的问题,并且可以利用多核CPU,child_process以Master-Worker的管理方式,通过将计算分发到各个子进程,再通过进程之间的事件消息来传递结果。

    需要补充node的用途

    相关文章

      网友评论

          本文标题:node简介

          本文链接:https://www.haomeiwen.com/subject/hckqyktx.html