美文网首页
NodeJs -- 1 (基本介绍)

NodeJs -- 1 (基本介绍)

作者: Coldhands | 来源:发表于2019-06-27 10:35 被阅读0次
    1.什么是NodeJs?

    NodeJs不是一门编程语言,是一个javascript的运行环境,NodeJs是采用C++语言编写而成的一个javascript的解释器。

    2.什么是运行环境?

    通俗讲指一种语言想要实现相关的功能需要另外一种事物(可以是语言也可以是其他的东西)作为它的载体或者运行平台。

    • 在客户端,javascript想要实现某种功能是需要浏览器提供支持,如果没有浏览器提供支持是完成不了的。
    • 操作系统的运行环境,就是电脑硬件本身,如果连电脑都没有,那么操作系统无法运行。
    3.为什么NodeJs是javascript的运行环境?

    因为NodeJs采用的是Google Chrome浏览器的V8引擎,而V8引擎就是javascript的运行环境。

    4.服务器语言有什么特点?

    4.1 进行http通信、接受http请求、响应http请求;
    4.2 操作数据库,对数据库里面的内容进行增删改查;
    4.3 可以操作本地文件,对本地文件进行读写,创建和删除等。

    5.NodeJs 有什么特点?

    5.1 进行http通信、接受http请求、响应http请求;
    5.2 操作数据库,对数据库里面的内容进行增删改查;
    5.3 可以操作本地文件,对本地文件进行读写,创建和删除等;
    5.4 是javascript的运行环境;
    5.5 事件驱动;
    5.6 非阻塞I/O;
    5.7 单线程。

    6.什么是事件驱动?

    事件:在客户端js中有 点击按钮事件/鼠标事件/键盘事件等都叫事件。
    事件驱动:有鼠标或者键盘引起一连串的操作动作叫做事件驱动。
    简单理解:通常事件驱动会伴随着相对应的程序处理或者函数的执行。

    7.什么是非阻塞I/O?

    I/O:input/outiput 输入输出
      
    通俗来讲:
     对于磁盘I/O = 读写
     对于网络I/O = 收发请求
      
    阻塞I/O:
     指在执行I/O的过程中,会阻塞其他应永程序的进行,只有等待这个I/O完成后,才会进行其他的操作。
    非阻塞I/O:
     指在执行I/O的过程中,不会等待其他应用程序执行完成后再执行其他应用程序,当I/O结束后,再回头处理这个结果,即异步。

    8.单线程

    单线程:程序按照逻辑顺序执行,前面的必须处理完成,后面的才会执行,即在同一个时间里面只能做一件事情。
     如:你在点击按钮出现弹窗的时候,就不可以对浏览器做出其他的相应操作。
      
    多线程:程序在一个时间里面可以做多个事情 能够提高效率
     如:迅雷同时下载多部电影
      
    问: javascript 是一门单线程语言,为什么javascript不能是多线程?
    答:javascript作为单线程,由其内容所决定,在浏览器环境中,JavaScript的主要用操作DOM。如果JavaScript同时有两个线程,一个线程在某个DOM节点上添加内容,另一个线程删除了这个节点,这个时候无法进行。

    9. 问题来了,既然javascript是单线程,那么为什么nodejs会有非阻塞I/O?

    I/O操作都是比较耗时的,这个会阻塞其他的任务进行,javascript的设计者认为,没有必要等待I/O的完成,在I/O任务完成之前javascript完全可以继续执行其他的任务,直到I/O任务完成后再回头执行该任务的返回就行。
    所以javascript在设计之初中将这些耗时的I/O等操作封装为了异步的方法,等到这些任务完成后就将后续的处理操作封装为JavaScript任务放入执行任务队列中,等待JavaScript线程空闲的时候被执行。

    相关文章

      网友评论

          本文标题:NodeJs -- 1 (基本介绍)

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