zoukankan      html  css  js  c++  java
  • 学习Node.js知识小结

    什么是Node.js

    官方解释:
    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js使用了一个事件驱动、非阻塞式I/O的模型( Node.js的特性),使其轻量级又高效。 Node.js 的包管理器 npm 是全球最大的开源库生态系统。

    上图所示:

    Node内部采用Google Chrome的V8引擎,作为JavaScript语言解释器

    通过自行开发的libuv库,调用操作系统资源

    总结:

    Node.js 是谷歌 V8 引擎、libuv平台抽象层以及主体使用 Javscript 编写的核心库三者集合的一个包装外壳,大量使用了使用事件驱动来实现异步开发,是一个JavaScript的运行环境(平台)。此外,在实时的Web应用上采用了基于 WebSocket 的推送技术,客户端和服务器端都可以发起通信,能够自由地交换数据。非常优雅、实用的打通了前后端。

    V8是谷歌开发的,目前公认最快的JavaScript解析引擎,并且具备服务器端解析功能。libuv是一个开源的、为Node定制而生的跨平台的异步I/O库。

    Node.js的特点

     Node.js能够处理庞大且高吞吐量的并发连接,常用于构建高性能、高扩展性的互联网应用,有以下特性:

    1.event-driven 事件驱动

    2.non-blocking 非阻塞的异步I/O调用

    3.lightweight 轻量级的,省空间,轻量意味着更好的移植性

    4.Node.js是跨平台的,可以运行在Linux、Unix、window

    5.efficent 高效(node.js是基于单线程)

    在PHP或者JSP中,是每个新增一个连接(请求)便生成一个新的线程,这个新的线程会占用系统内存,最终会占掉所有的可用内存。而 Node.js 仅仅只运行在一个单线程中,使用非阻塞的异步 I/O 调用,所有连接都由该线程处理,在 libuv 的加分下,可以允许其支持数万并发连接(全部挂在该线程的事件循环中),如下图所示:

    注意:Node.js 也有缺陷,如果过多的客服端的请求共享单一线程也会使Node出现问题,大量的计算可能会导致Node的单线程暂时失去反应,并导致所有的其他客户端的请求一直阻塞,直到计算结束才恢复正常。

    解决方法:异常回调传递,Forever进行进程监视等。

    Node.js代码举例:

    在Node.js上建一个http服务器

    const http = require('http');
    
    // 创建一台服务器
    var server = http.createServer(function (request, response) {   //当有人来访问这个服务器时,就会执行function 这个回调函数
        console.log('有人来访问我了');
        response.write('smyhvae');  //向浏览器输出内容
        response.end();   //结束
    
    });
    server.listen(8080);
    
    // function 回调函数里可以设置两个参数:request 和 response。response.write()表示向浏览器输出信息

     注:Node.js是通过commonJS规范实现模块系统的(require、exports、module.exports)

  • 相关阅读:
    C# 打印文件
    oc语言学习之基础知识点介绍(五):OC进阶
    oc语言学习之基础知识点介绍(四):方法的重写、多态以及self、super的介绍
    oc语言学习之基础知识点介绍(三):类方法、封装以及继承的介绍
    oc语言学习之基础知识点介绍(二):类和对象的进一步介绍
    oc语言学习之基础知识点介绍(一):OC介绍
    c语言学习之基础知识点介绍(二十):预处理指令
    c语言学习之基础知识点介绍(十九):内存操作函数
    XCTF-ics-04
    Portswigger-web-security-academy:dom-base_xss
  • 原文地址:https://www.cnblogs.com/lhh520/p/10282942.html
Copyright © 2011-2022 走看看