计算机
类型
6.7
豆瓣评分
可以朗读
语音朗读
162千字
字数
2018-01-01
发行日期
展开全部
主编推荐语
Node.js基础特性入门,紧跟趋势,案例实践应用。
内容简介
本书分为七章,讲解了Node.js的各种基础特性,让读者快速入门,同时结合语言最新的发展趋势,让读者能够紧跟技术潮流。 本书最后两章分别提供了两个大案例,介绍了Node.js在Web开发和爬虫系统中的应用,最后在附录中,结合实际工作经验,介绍了Node.js在大型项目中的定位与应用。
目录
- 封面页
- 书名页
- 版权页
- 内容简介
- 作者简介
- 前言
- 本书定位
- 关于本书内容
- 关于本书中的代码
- 本书面向的读者
- 如何学习Node
- 名称约定
- 纠错
- 致谢
- 目录
- 第1章 基础知识
- 1.1 Node是什么
- 1.1.1 Node与JavaScript
- 1.1.2 runtime和VM
- 1.2 Node的内部机制
- 1.2.1 何为回调
- 1.2.2 同步/异步和阻塞/非阻塞
- 1.2.3 单线程和多线程
- 1.2.4 并行和并发
- 1.3 事件循环(Event loop)
- 1.3.1 事件与循环
- 1.3.2 Node中的事件循环
- 1.3.3 process.nextTick
- 1.4 总结
- 1.5 参考资源
- 第2章 常用模块
- 2.1 Module
- 2.1.1 JavaScript的模块规范
- 2.1.2 require及其运行机制
- 2.1.3 require的隐患
- 2.1.4 模块化与作用域
- 2.2 Buffer
- 2.2.1 Buffer的构建与转换
- 2.2.2 Buffer的拼接
- 2.3 File System
- 2.4 HTTP服务
- 2.4.1 创建HTTP服务器
- 2.4.2 处理HTTP请求
- 2.4.3 Response对象
- 2.4.4 上传数据
- 2.4.5 HTTP客户端服务
- 2.4.6 创建代理服务器
- 2.5 TCP服务
- 2.5.1 TCP和Socket
- 2.5.2 创建TCP服务器
- 2.6 更安全的传输方式——SSL
- 2.6.1 什么是SSL
- 2.6.2 SSL原理
- 2.6.3 对称加密与非对称加密
- 2.6.4 关于CA
- 2.6.5 创建HTTPS服务
- 2.7 WebSocket
- 2.7.1 保持通话
- 2.7.2 为什么要有WebSocket
- 2.7.3 WebSocket与Node
- 2.8 Stream
- 2.8.1 Stream的种类
- 2.8.2 ReadLine
- 2.8.3 自定义Stream
- 2.9 Events
- 2.9.1 事件和监听器
- 2.9.2 处理error事件
- 2.9.3 继承Events模块
- 2.10 多进程服务
- 2.10.1 child_process模块
- 2.10.2 spawn
- 2.10.3 fork
- 2.10.4 exec和execFile
- 2.10.5 各方法之间的比较
- 2.10.6 进程间通信
- 2.10.7 Cluster
- 2.11 Process对象
- 2.11.1 环境变量
- 2.11.2 方法和事件
- 2.11.3 一个例子:修改所在的时区
- 2.12 Timer
- 2.12.1 常用API
- 2.12.2 定时器中的this
- 2.13 小结
- 2.14 引用资源
- 第3章 用ES6来书写Node
- 3.1 新时代的EMCAScript
- 3.1.1 JavaScript的缺陷
- 3.1.2 Node对新标准的支持
- 3.1.3 使用nvm管理Node版本
- 3.2 块级作用域
- 3.2.1 ES5中的作用域
- 3.2.2 let关键字
- 3.2.3 const关键字
- 3.3 数组
- 3.3.1 find()和findIndex()
- 3.3.2 from()方法
- 3.3.3 fill()方法
- 3.3.4 数组的遍历
- 3.3.5 TypedArray
- 3.4 函数
- 3.4.1 参数的默认值
- 3.4.2 Spread运算符
- 3.4.3 箭头函数
- 3.4.4 箭头函数的陷阱
- 3.5 Set和Map
- 3.5.1 Set和WeakSet
- 3.5.2 Map和WeakMap
- 3.6 Iterator
- 3.6.1 Java中的Iterator
- 3.6.2 ES6中的Iterator
- 3.6.3 Iterator的遍历
- 3.7 对象
- 3.7.1 新的方法
- 3.7.2 对象的遍历
- 3.8 类
- 3.8.1 属性和构造函数
- 3.8.2 类方法
- 3.8.3 __proto__
- 3.8.4 静态方法
- 3.9 类的继承
- 3.9.1 ES5中的继承
- 3.9.2 ES6中的继承
- 3.9.3 Node中的类继承
- 3.10 ES6的模块化标准
- 3.11 使用babel来转换代码
- 3.12 小结
- 3.13 引用资源
- 第4章 书写异步代码
- 4.1 异步操作的返回值
- 4.2 组织回调方法
- 4.2.1 回调与CPS
- 4.2.2 使用async模块简化回调
- 4.3 使用Promise
- 4.3.1 Promise的历史
- 4.3.2 Promise是什么
- 4.3.3 ES2015中的Promise
- 4.3.4 Promise的常用API
- 4.3.5 使用Promise组织异步代码
- 4.3.6 第三方模块的Promise
- 4.4 Generator,一种过渡方案
- 4.4.1 Generator的使用
- 4.4.2 Generator函数的执行
- 4.4.3 Generator中的错误处理
- 4.4.4 用Generator组织异步方法
- 4.4.5 Generator的自动执行
- 4.5 回调的终点——async/await
- 4.5.1 async函数的概念
- 4.5.2 await关键字
- 4.5.3 在循环中使用async方法
- 4.5.4 async和await小结
- 4.5.5 async函数的缺点
- 4.6 总结
- 4.7 引用资源
- 第5章 使用Koa2构建Web站点
- 5.1 Node Web框架的发展历程
- 5.1.1 Connect
- 5.1.2 Express
- 5.1.3 Koa
- 5.2 内容规划
- 5.2.1 需求分析
- 5.2.2 技术选型
- 5.3 Koa入门
- 5.3.1 Koa1.x与Koa2
- 5.3.2 context对象
- 5.4 middleware
- 5.4.1 中间件的概念
- 5.4.2 next方法
- 5.4.3 中间件的串行调用
- 5.4.4 一个例子——如何实现超时响应
- 5.5 常用服务的实现
- 5.5.1 静态文件服务
- 5.5.2 路由服务
- 5.5.3 数据存储
- 5.5.4 文件上传
- 5.5.5 页面渲染
- 5.6 构建健壮的Web应用
- 5.6.1 上传文件验证
- 5.6.2 使用Cookie进行身份验证
- 5.6.3 使用Session记录会话状态
- 5.7 使用Redis进行持久化
- 5.7.1 Node和Redis的交互
- 5.7.2 CURD操作
- 5.7.3 使用Redis持久化session
- 5.7.4 Redis在Node中的应用
- 5.8 Koa源码剖析
- 5.8.1 Koa的启动过程
- 5.8.2 中间件的加载
- 5.8.3 listen()方法
- 5.8.4 next()与return next()
- 5.8.5 关于Can't set headers after they are sent.
- 5.8.6 Context对象的实现
- 5.8.7 Koa的优缺点
- 5.9 网站部署
- 5.9.1 本地部署
- 5.9.2 部署在云服务主机上
- 5.9.3 通过GitHub pages来部署
- 5.10 总结
- 5.11 引用资源
- 第6章 爬虫系统的开发
- 6.1 爬虫技术概述
- 6.2 技术栈简介
- 6.2.1 request.js
- 6.2.2 cheerio
- 6.2.3 消息队列
- 6.3 构建脚手架
- 6.3.1 选择目标网站
- 6.3.2 分析URL结构
- 6.3.3 构建HTTP请求
- 6.3.4 解析页面元素
- 6.4 进行批量爬取
- 6.4.1 使用递归和定时器
- 6.4.2 多进程并行
- 6.5 爬虫架构的改进
- 6.5.1 异步流程控制
- 6.5.2 回到最初的目标
- 6.5.3 多进程模型的缺陷
- 6.6 进程架构的改进
- 6.6.1 生产/消费模型
- 6.6.2 生产者的实现
- 6.6.3 消费者的实现
- 6.7 反爬虫处理
- 6.7.1 爬虫的危害
- 6.7.2 识别一个爬虫
- 6.7.3 针对爬虫的处理
- 6.8 总结
- 6.9 引用资源
- 第7章 测试与调试
- 7.1 单元测试
- 7.1.1 使用Assert模块
- 7.1.2 Jasmine
- 7.1.3 Ava.js——面向未来
- 7.2 测试现有代码
- 7.3 更高维度的测试
- 7.3.1 基准测试
- 7.3.2 集成测试
- 7.3.3 持续集成
- 7.4 调试Node应用
- 7.4.1 语言和IDE
- 7.4.2 使用node-inspector
- 7.4.3 使用v8-inspector
- 7.4.4 使用IDE进行调试
- 7.4.5 cpu profiling
- 7.5 总结
- 7.6 引用资源
- 第8章 Node中的错误处理
- 8.1 Error模块
- 8.2 错误处理的几种方式
- 8.3 被抛弃的Domain
- 8.3.1 Domain模块简介
- 8.3.2 Domain原理
- 8.3.3 Domain中间件
- 8.3.4 Domain的缺陷
- 8.4 ES6中的错误处理
- 8.4.1 Promise
- 8.4.2 Generator
- 8.4.3 async函数
- 8.5 Web服务中的错误处理
- 8.5.1 针对每个请求的错误处理
- 8.5.2 Express中的错误处理
- 8.5.3 Koa中的错误处理
- 8.6 防御式编程与Let it crash
- 8.7 总结
- 8.8 引用资源
- 附录A 进程、线程、协程
- A.1 从操作系统说起
- A.2 Node中的协程
- 附录B Lua语言简介
- B.1 Lua中的数据类型
- B.2 定义一个函数
- B.3 Lua中的协程
- 附录C 从零开发一个Node Web框架
- C.1 框架的雏形
- C.2 框架的完善
- C.3 总结
- 附录D MongoDB和Redis简介
- D.1 NoSQL
- D.2 MongoDB简介
- D.3 Redis简介
- 附录E 使用Docker来实现虚拟化
- E.1 Docker的一些常用命令
- E.2 Redis服务
- 附录F npm与包管理
- F.1 package.json常用字段
- F.2 依赖版本的管理
展开全部
出版方
清华大学出版社
清华大学出版社成立于1980年6月,是由教育部主管、清华大学主办的综合出版单位。植根于“清华”这座久负盛名的高等学府,秉承清华人“自强不息,厚德载物”的人文精神,清华大学出版社在短短二十多年的时间里,迅速成长起来。清华大学出版社始终坚持弘扬科技文化产业、服务科教兴国战略的出版方向,把出版高等学校教学用书和科技图书作为主要任务,并为促进学术交流、繁荣出版事业设立了多项出版基金,逐渐形成了以出版高水平的教材和学术专著为主的鲜明特色,在教育出版领域树立了强势品牌。