Node.js实战(第2版)出版时间:2018内容简介 本书是Node.js的实战教程,涵盖了为开发产品级Node应用程序所需要的一切特性、技巧以及相关理念。 从搭建Node开发环境,到一些简单的演示程序,到开发复杂应用程序所必不可少的异步编程。D2版介绍了全栈kai发者所需的全部技术,包括前端构建系统、选择Web框架、在Node中与数据库的交互、编写测试和部署Web程序,等等。目录第 一部分 Node基础知识介绍 第 1 章 欢迎进入Node.js的世界 21.1 一个典型的Node Web应用程序 21.1.1 非阻塞I/O 31.1.2 事件轮询 41.2 ES2015、Node和V8 51.2.1 Node与V8 71.2.2 使用特性组 81.2.3 了解Node的发布计划 81.3 安装Node 81.4 Node自带的工具 91.4.1 npm 91.4.2 核心模块 101.4.3 调试器 111.5 三种主流的Node程序 121.5.1 Web应用程序 121.5.2 命令行工具和后台程序 131.5.3 桌面程序 141.5.4 适合Node的应用程序 141.6 总结 15第 2 章 Node编程基础 162.1 Node功能的组织及重用 162.2 开始一个新的Node项目 182.3 用module.exports微调模块的创建 202.4 用node_modules重用模块 222.5 注意事项 232.6 使用异步编程技术 242.7 用回调处理一次性事件 252.8 用事件发射器处理重复性事件 282.8.1 事件发射器示例 282.8.2 响应只应该发生一次的事件 292.8.3 创建事件发射器:一个PUB/SUB的例子 292.8.4 扩展事件监听器:文件监视器 322.9 异步开发的难题 342.10 异步逻辑的顺序化 352.11 何时使用串行流程控制 362.12 实现串行化流程控制 372.13 实现并行化流程控制 392.14 利用社区里的工具 412.15 总结 43第 3 章 Node Web程序是什么 443.1 了解Node Web程序的结构 453.1.1 开始一个新的Web程序 453.1.2 跟其他平台比一比 473.1.3 然后呢 473.2 搭建一个RESTful Web服务 473.3 添加数据库 503.3.1 制作自己的模型API 513.3.2 让文章可读并把它存起来 533.4 添加用户界面 543.4.1 支持多种格式 543.4.2 渲染模板 553.4.3 用npm管理客户端依赖项 563.5 总结 57D二部分 Node的Web开发第 4 章 前端构建系统 604.1 了解基于Node的前端开发 604.2 用npm运行脚本 614.2.1 创建定制的npm脚本 624.2.2 配置前端构建工具 634.3 用Gulp实现自动化 634.3.1 把Gulp添加到项目中 644.3.2 Gulp任务的创建及运行 644.3.3 监测变化 664.3.4 在大项目中把任务分散到不同文件中 664.4 用Webpack构建Web程序 674.4.1 使用打包器和插件 674.4.2 配置和运行Webpack 684.4.3 用Webpack开发服务器 684.4.4 加载CommonJS模块和静态资源 704.5 总结 71第 5 章 服务器端框架 725.1 用户画像 725.1.1 菲尔:代理kai发者 735.1.2 纳迪娜:开源kai发者 735.1.3 爱丽丝:产品kai发者 735.2 框架是什么 745.3 Koa 745.3.1 设置 765.3.2 定义路由 765.3.3 REST API 775.3.4 优点 775.3.5 弱点 775.4 Kraken 775.4.1 设置 775.4.2 定义路由 785.4.3 REST API 795.4.4 优点 795.4.5 弱点 795.5 hapi 795.5.1 设置 805.5.2 定义路由 805.5.3 插件815.5.4 REST API 825.5.5 优点 835.5.6 弱点 835.6 Sails.js 835.6.1 设置 835.6.2 定义路由 845.6.3 REST API 845.6.4 优点 855.6.5 弱点 855.7 DerbyJS 855.7.1 设置 855.7.2 定义路由 865.7.3 REST API 875.7.4 优点 875.7.5 弱点 875.8 Flatiron.js 875.8.1 设置 885.8.2 定义路由 885.8.3 REST API 895.8.4 优点 905.8.5 弱点 905.9 LoopBack 905.9.1 设置 915.9.2 定义路由 925.9.3 REST API 925.9.4 优点 935.9.5 弱点 935.10 比较 935.11 编写模块化代码 955.12 用户选择 955.13 总结 95第 6 章 深入了解Connect和Express 966.1 Connect 966.1.1 创建Connect程序 976.1.2 了解Connect中间件的工作机制 976.1.3 组合中间件 986.1.4 中间件的顺序 986.1.5 创建可配置的中间件 996.1.6 使用错误处理中间件 1016.2 Express 1036.2.1 生成程序框架 1036.2.2 Express和程序的配置 1076.2.3 渲染视图 1096.2.4 Express路由入门 1136.2.5 用户认证 1206.2.6 注册新用户 1246.2.7 已注册用户登录 1306.2.8 用户加载中间件 1336.2.9 创建REST API 1346.2.10 启用内容协商 1406.3 总结 142第 7 章 Web程序的模板 1437.1 用模板保持代码的整洁性 1437.2 Embedded JavaScript的模板 1477.2.1 创建模板 1487.2.2 将EJS集成到你的程序中 1497.2.3 在客户端程序中使用EJS 1507.3 使用Mustache模板语言与Hogan 1517.3.1 创建模板 1517.3.2 Mustache标签 1517.3.3 微调Hogan 1547.4 用Pug做模板 1547.4.1 Pug基础知识 1557.4.2 Pug模板中的逻辑 1577.4.3 组织Pug模板 1597.5 总结 163第 8 章 存储数据 1648.1 关系型数据库 1648.2 PostgreSQL 1648.2.1 安装及配置 1648.2.2 创建数据库 1658.2.3 从Node中连接Postgres 1658.2.4 定义表 1668.2.5 插入数据 1668.2.6 更新数据 1668.2.7 查询数据 1678.3 Knex 1678.3.1 查询构建器 1688.3.2 用Knex实现连接和查询 1688.3.3 切换数据库 1708.3.4 注意抽象漏洞 1718.4 MySQL和PostgreSQL 1718.5 ACID保证 1728.5.1 原子性:无论成败,事务必须整体执行 1728.5.2 一致性:始终确保约束条件 1728.5.3 隔离性:并发事务不会相互干扰 1728.5.4 耐用性:事务是永久性的 1738.6 NoSQL 1738.7 分布式数据库 1738.8 MongoDB 1748.8.1 安装和配置 1748.8.2 连接MongoDB 1748.8.3 插入文档 1758.8.4 查询 1768.8.5 使用MongoDB标识 1778.8.6 使用复制集 1788.8.7 了解写关注 1808.9 键/值存储 1818.10 Redis 1818.10.1 安装和配置 1828.10.2 初始化 1828.10.3 处理键/值对 1838.10.4 处理键 1848.10.5 编码与数据类型 1848.10.6 使用散列表 1868.10.7 使用列表 1868.10.8 使用集合 1878.10.9 用频道实现发布/订阅功能 1888.10.10 提升性能 1898.11 嵌入式数据库 1898.12 LevelDB 1908.12.1 LevelUP与LevelDOWN 1908.12.2 安装 1918.12.3 API概览 1918.12.4 初始化 1918.12.5 键/值编码 1928.12.6 键/值对的读写 1928.12.7 可插拔的后台 1938.12.8 模块化数据库 1948.13 昂贵的序列化和反序列化 1958.14 浏览器内存储 1968.14.1 Web存储:localStorage和sessionStorage 1968.14.2 值的读写 1978.14.3 localForage 1998.14.4 读和写 1998.15 存储托管 2008.16 选哪个数据库 2018.17 总结 201第 9 章 测试Node程序 2029.1 单元测试 2039.1.1 assert模块 2039.1.2 Mocha 2069.1.3 Vows 2119.1.4 Chai 2139.1.5 Should.js 2149.1.6 Sinon.JS的探测器和存根 2169.2 功能测试 2189.3 处理失败的测试 2219.3.1 获取更详细的日志 2219.3.2 更好的栈跟踪 2239.4 总结 224第 10 章 Node程序的部署及运维 22510.1 安置Node程序 22510.1.1 平台即服务 22610.1.2 服务器 22710.1.3 容器 22810.2 部署的基础知识 22910.2.1 从Git库部署 22910.2.2 保证Node不掉线 23010.3 在线时长和性能的zui大化 23110.3.1 用Upstart保证在线时长 23210.3.2 集群API:充分利用多核处理器 23310.3.3 静态文件及代理 23510.4 总结 236第三部分 超越Web开发第 11 章 编写命令行程序 23811.1 了解惯例和理念 23811.2 parse-json 23911.3 使用命令行参数 23911.3.1 解析命令行参数 23911.3.2 验证参数 24011.3.3 将stdin作为文件传递 24111.4 用npm分享命令行工具 24211.5 用管道连接脚本 24311.5.1 将数据通过管道传给parse-json 24311.5.2 处理错误和退出码 24311.5.3 在Node中使用管道 24511.5.4 管道与命令的执行顺序 24611.6 解释真正的脚本 24711.7 总结 247第 12 章 用Electron征服桌面 24812.1 认识Electron 24812.1.1 Electron的技术栈 24912.1.2 界面设计 25012.2 创建一个Electron程序 25012.3 搭建完整的桌面端程序 25212.3.1 引导React与Babel 25312.3.2 安装依赖项 25312.3.3 设置Webpack 25412.4 React程序 25512.4.1 定义Request组件 25612.4.2 定义Response组件 25812.4.3 React组件之间的通信 26112.5 构建与分发 26112.5.1 用Electron打包器构建程序 26112.5.2 打包 26212.6 总结 263附录 A 安装Node 264附录 B 自动化的网络抓取 267附录 C Connect的官方中间件 277术语表 307 上一篇: 区块链网络构建和应用:基于超级账本Fabric的商业实践 下一篇: 抖音就该这么玩:行业风向、内容制作、引流运营一本通