展开全部

主编推荐语

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月,是由教育部主管、清华大学主办的综合出版单位。植根于“清华”这座久负盛名的高等学府,秉承清华人“自强不息,厚德载物”的人文精神,清华大学出版社在短短二十多年的时间里,迅速成长起来。清华大学出版社始终坚持弘扬科技文化产业、服务科教兴国战略的出版方向,把出版高等学校教学用书和科技图书作为主要任务,并为促进学术交流、繁荣出版事业设立了多项出版基金,逐渐形成了以出版高水平的教材和学术专著为主的鲜明特色,在教育出版领域树立了强势品牌。