共计 901 个字符,预计需要花费 3 分钟才能阅读完成。
一、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 转译器