1、oh my zsh

2、Node.js不是什么
不是编程语言
不是web框架

Node.js是什么
是一个平台
让JavaScript也能调用系统接口、开发后端应用

Node.js用到了哪些技术?

V8引擎
libuv
C/C++实现的c-ares、http-parser、OpenSSL、zlib等库

Node.js技术架构

image.png
image.png
了解更多:https://github.com/yjhjstz/deep-into-node

什么是bindings

image.png

JS与C++交互-大大扩展了JS的能力

image.png

Node.js工作流程

image.png

image.png

libuv是什么

Node.js用到了哪些技术
image.png

v8是什么?

垃圾回收的目的是为了重复利用内存。

V8本身是多线程的

image.png

V8引擎
zlib做加密
c-ares做域名的解析
http-server 解析http
OpenSSL 做https
文件是外部的 在硬盘上
硬盘和操作系统是分开的
socket也是外部的 另外一台机器传的

三种不同的事件

所以Node.js需要按顺序轮询每种事件
这种轮询往往都是循环的

EventLoop
image.png

timers检查计时器
poll轮询,检查系统事件
check检查setImmediate回调

注意:
大部分时间,Node.js都停在poll轮询阶段
大部分事件都在poll阶段被处理,如文件、网络请求。
setTimeout(f1,0) 不确定,大部分情况下,都是setImmediate(f2)先执行
setImmediate(f2)

浏览器就两个队列

总结

用event loop管理事件处理顺序
用C/C++库高效处理DNS/HTTP
怎么让JS也能处理
用bindings让JS能和C/C++沟通
用V8运行JS
用Node.js标准库简化JS代码
这就是Node.js

libuv开一个线程去读文件

Node.js API

Assertion 断言
Testing 测试
Async Hooks 异步钩子
Buffer 一小段缓存
用户在上传文件的时候,文件是一点点上传的,内存也是一点点得处理数据
Child Processes子进程
Cluster
Debugger
DNS
nslookup baidu.com

Events
File System 文件系统
Globals
dirname 当前文件所在的目录
filename 当前文件的文件名

Process 进程

学习路线
基础-Web-框架