一、Node Web应用程序
劣势:单线程编程模型
Q:不可能让用户干等着呀,node要怎么解决呢?
A:引入事件机制
1.1 非阻塞I/O
面临问题:拜访磁盘和网络的I/O个别较慢
用户心愿:在读取文件或通过网络发送音讯时,运行平台不会阻塞业务逻辑的执行
Node解决方向:事件、异步API、非阻塞I/O
非阻塞I/O:程序能够在做其余事件的时候发动网络申请获取资源,但网络操作实现之后会运行一个回调函数来解决这个操作的后果
图:一个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
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转译器