Node.js学习笔记1——Node基本情况

一、Node Web应用程序

优势:单线程编程模型

Q:不可能让用户干等着呀,node要怎么解决呢?
A:引入事件机制

1.1 非阻塞I/O

面临问题:访问磁盘和网络的I/O一般较慢
用户希望:在读取文件或通过网络发送消息时,运行平台不会阻塞业务逻辑的执行
Node解决方向:事件、异步API、非阻塞I/O

非阻塞I/O:程序可以在做其他事情的时候发起网络请求获取资源,但网络操作完成之后会运行一个回调函数来处理这个操作的结果

image.png
图:一个Node应用程序中的异步非阻塞组件

1.2事件轮询event loop

事件轮询是单向运行的先入先出队列,要经过几个阶段:
1.计时器开始执行
2.运行I/O回调
3.用setImmediate安排回调(允许将回调安排在当前队列中的I/O回调完成之后立即执行)

二、ES6、Node和V8

2.1 ES6和Node

可以创建类
可以使用let和const解决作用域问题
原生的promise和生成器
模板字符串
箭头函数
......

2.2 Node和V8

image.png

2.3 使用特性组

包含了V8提供的ES6特性,分别为:shipping、staged、in progress三组

shipping:默认开启
staged:在运行Node时加上参数 --harmony(V8团队将所有接近完成的特性都放在了这一组)
in progress:建议通过grep "in progress"来查询当前可用的in progress特性

2.4 Node发布计划

长期支持版(LTS)
当前版
每日构建版

三、Node自带的工具

3.1 npm

用于安装npm注册中心的包,显示和分享自己的项目......
全局安装的包一般是工具、命令

3.2 核心模块

相当于标准库

3.2.1 文件系统

文件系统库fs、path

3.2.2 网络

TCP客户端和服务端库(net)、HTTP库(http和https)、域名解析库(dns)

3.2.3 调试器

自带的调试器支持单步执行和REPL(读取-计算-输出-循环)
Node支持Chrome交互式调试

四、三种主流的Node程序

4.1 Web应用程序

4.2 命令行工具和后台程序

JavaScript开发人员所使用的进程管理器和JavaScript转译器

4.3 桌面程序