Nodejs 初识篇

Nodejs 基础

什么是nodejs

  • Node.js 不是变成语言, 只是javascript的一个编译环境, 我们在这个环境里还是写javascript
  • 之前的javascript是依托于浏览器存在的, 无法单独运行,js缺少一些I/O操作
  • Node里有 模块化的 概念 Node把每一类功能都封装成了一个模块(文件) node里采用了CommonJS规范
  • Node为我们提供了 npm(包管理器). 可以让我们快速方便的管理第三方库
  • 喜欢处理高并发, 低逻辑运算的请求

nodejs的特点

  1. 非阻塞式的异步的I/O

    例子: 访问数据库, 需要一段时间, 在传统单线程处理机制中, 该线程在处理数据库的操作时, 整个线程停下来, 一直等着从数据库里取出数据, 然后后面的代码才继续执行, 也就是说, I/O是阻塞的, 效率比较低

    ​ Node也是单线程, 但是node在执行一个需求时, 比方访问数据库, 将立刻执行后面的代码, 把数据库执行完成之后取回的结果放进回调函数里, 提高效率

    ​ 1个厨师:

    ​ 传统厨师, 6个人排队点饭, 厨师听了第一个人的需求就先去做第一个人的饭了, 后面5个人只能排队等着, 阻塞

    ​ node厨师, 6个人点饭, 厨师一个一个问一遍需求, 然后这些人可以不用排队继续做自己的事情去, 等到对应的饭做好之后, 厨师喊号.

  2. 单线程, 异步回调

     java, php, .net 这些服务端的语言, 会为每一个请求开辟一个线程, 大概每个线程需要消耗2M的空间, 理论上, 8G的服务器允许同时连接4000个请求, 如果要支持更多的用户, 增加服务器数量, 成本问题
    

    ​ Node不会为每个请求开辟一个线程, 而仅仅使用一个线程, 当有用户连接时, 触发一个内部事务, 通过非阻塞式的I/O和回调函数保证事件的执行. 理论上一个8G的服务器, 可以同时支持4万个用户连接

  3. 事件驱动

    ​ 因为node是单线程, 所以, node采用的是事件循环机制. 内部拥有个infinity loop, 每当有新的连接进来时, node会将其放进事件循环, 单线程执行完一个, 从循环里再取出一个

  4. 兼容性好,跨平台

单线程的弊端

  1. 无法充分利用多核cpu
  2. 因为是单线程, 如果有错误, 会导致整个应用退出
  3. 大量计算的需求, 会导致node的延迟

你可能感兴趣的:(NODEJS,学习笔记)