Node.js与前端开发实战 | 青训营笔记

70 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第2天

Node.js简介

Node.js发布于2009年5月,由Ryan Dahl开发,是一个基于Chrome V8引擎的JavaScript运行环境,使用了一个事件驱动、非阻塞式I/O模型, 让JavaScript 运行在服务端的开发平台,它让JavaScript成为与PHPPythonPerlRuby等服务端语言平起平坐的脚本语言。  

Node.js对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好,V8引擎执行Javascript的速度非常快,性能非常好,基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用

Node.js的组成成分

image.png

Node.js运行时结构-V8,libuv

  • V8:JavaScript Runtime,诊断调试工具(inspector)
  • libuv:eventloop(事件循环),syscall(系统调用)

Node.js运行时结构-特点

image.png

1.异步IO

当Node.js执行I/o操作时,会在响应返回后恢复操作,而不是阻塞路线并占用额外内存等待。

2.单线程

  • J单线程
    实际:JS线程+uv线程+VB任务线程池+ V8 Inspector线程
  • 优点:不用考虑多线程状态同步问题,也就不需要锁;同时还能比 较高效地利用系统资源
  • 缺点:阻塞会产生更多负面影响
    解决办法:多进程或多线程

编写Http Server-安装Node.js

  • Mac, Linux推荐使用nvm。多版本管理。
  • Windows推荐mm4w或是官方安装包。
  • 安装慢,安装失败的情况,设置安装源。

编写 http server-debug

  • V8 Inspector开箱即用、特性丰富强大、与前端开发一致、跨平台
    node--inspect
    open http://localhost:9229/json
  • 场景:
    查看console.log内容
    breakpoint
    高CPU、死循环:cpuprofile
    高内存占用 heapsnapshot
    性能分析

编写 qhttp server--部署

  • 部署要解决的问题
    1.守护进程:当进程退出时,重新拉起
    2.多进程: cluster便捷地利用多进程
    3.记录进程状态,用于诊断
  • 容器环境
    通常有健康检查的手段,只需考虑多核cpu利用率即可