了不起的JavaScript工程师:从前端到全端高级进阶 作者:朱德龙 出版时间:2019年版内容简介 本书讲述了开发者使用JavaScript在各种Web开发场景下所需要掌握的重点知识和概念。从zui基础的开发工具讲起,再到开发思维方式和前端页面开发,然后扩展到小程序开发和开发工具的混合应用,再讲解前后端交互zui常用的网络协议及API设计,zui后讲解了使用Node.js开发服务器端应用程序所需要掌握的核心概念。 全书以数据链为线索,对重要概念进行精练的分析和对比,从而帮助读者更好地理解和记忆。本书既包括知识技能,又包括设计思想,“道”与“术”并重,让读者“知行合一”,既能“坐而论道”,也能“起而行之”。 本书适合初级和中级前端开发者用来提升技术水平与视野,建立较为完备的开发技能和可迁移的学习能力,帮助读者拥有全端的技术和全局的视野,成为“了不起的JavaScript工程师”。目录第1章 开发环境 11.1 代码编写工具 21.1.1 IDE 21.1.2 编辑器 31.1.3 最佳选择 31.2 Docker容器 51.2.1 Docker概述 51.2.2 Docker重要概念 61.2.3 Docker使用场景 111.2.4 Docker扩展 151.3 代码管理 151.3.1 什么是代码仓库 161.3.2 版本管理的意义 161.3.3 版本管理的常用操作 161.3.4 分支管理的意义 171.3.5 分支管理的常用操作 171.3.6 分支管理流程 181.4 其他软件 231.4.1 文件夹管理软件 231.4.2 快速搜索工具 241.4.3 终端管理软件 251.4.4 Chrome中的插件 251.5 硬件提升 261.5.1 提升程序运行速度 261.5.2 减少程序切换时间 271.6 小结 28第2章 Web页面与多页应用 292.1 Web页面的运行环境――浏览器 292.1.1 渲染引擎 302.1.2 JavaScript引擎 382.1.3 数据持久层 402.2 HTML 412.3 模板 422.3.1 模板的意义 422.3.2 常用模板分类 422.3.3 模板的重要功能 422.4 CSS盒模型 452.5 CSS 462.6 CSS布局 472.6.1 普通文档流 472.6.2 浮动 572.6.3 定位 612.6.4 弹性盒模型 622.7 CSS预处理 682.7.1 预处理的意义 682.7.2 预处理的重要功能 692.7.3 样式文件规划 722.7.4 样式类命名 732.8 JavaScript 772.8.1 实现功能逻辑 772.8.2 操作页面或浏览器 782.8.3 进行网络通信 792.8.4 第三方JavaScript库――jQuery 842.8.5 JavaScript简史 842.9 自动化构建工具 852.9.1 自动化构建工具的作用 852.9.2 常用的自动化构建工具 852.10 小结 86第3章 高效编写/组织代码的心法 873.1 拆分方式 893.1.1 按文件类型拆分 893.1.2 按功能类型拆分 903.1.3 按关注点拆分 903.2 抽象原则 913.2.1 第一原则:DRY 913.2.2 第二原则:YAGNI 923.2.3 第三原则:The Rule of Three 933.3 不止于代码 943.4 小结 94第4章 模块 964.1 模块的意义 964.2 ECMAScript 5中的模块 964.2.1 立即执行函数表达式(Immediately-Invoked Function Expression) 974.2.2 显式模块声明 974.2.3 异步模块定义 984.2.4 共同模块定义 994.2.5 CommonJS 1004.2.6 通用模块定义 1014.3 ECMAScript 6中的模块 1024.4 模块打包工具 1034.5 小结 107第5章 单页应用(SPA) 1085.1 框架 1095.2 视图与数据 1105.2.1 双向数据绑定 1115.2.2 单向数据流 1155.3 路由 1165.3.1 hash 1165.3.2 history 1175.4 组件 1195.4.1 原生组件 1195.4.2 第三方组件 1215.5 小结 123第6章 JavaScript的几个趋势 1246.1 接口与数据类型 1256.2 更好的异步解决方案 1276.3 面向对象与类 1326.3.1 封装 1326.3.2 继承 1346.3.3 多态 1356.4 模块化 1386.5 小结 141第7章 小程序概述 1427.1 常见的App 1427.2 JavaScript开发者的一双翅膀 1437.3 小程序的发展 1447.4 小结 144第8章 小程序与Web页面 1458.1 WXML 1458.1.1 WXML与HTML的相同之处 1458.1.2 WXML与HTML的不同之处 1468.2 WXSS 1498.2.1 WXSS与CSS的相同点 1498.2.2 WXSS与CSS的不同点 1498.3 JavaScript与WXS 1558.4 JSON 1558.4.1 app.json 1558.4.2 project.config.json 1568.4.3 page.json 1578.4.4 component.json 1588.5 小结 158第9章 小程序与单页应用 1599.1 路由 1599.1.1 路由配置 1599.1.2 路由跳转 1609.1.3 路由监听 1619.2 组件 1629.2.1 组件与页面 1629.2.2 小程序组件与单页应用组件 1649.3 web-view 1659.3.1 作用 1659.3.2 交互 1659.4 小结 165第10章 小程序的框架与插件 16610.1 RxWX 16610.2 WePY 16810.3 mpvue 17110.4 Taro 17110.5 小结 171第11章 小程序的开发工具与发布 17311.1 开发者工具组成 17311.1.1 模拟器 17411.1.2 调试器 17411.1.3 编辑器 17611.1.4 其他功能 17611.2 发布流程 17711.2.1 小程序的版本 17711.2.2 用户身份与权限 17811.3 小结 178第12章 其他混合应用简介 18012.1 流应用 18012.2 桌面应用 18112.3 小结 182第13章 HTTP协议与Web网站 18313.1 HTTP的历史 18313.2 HTTP的通信方式 18313.3 HTTP的状态 18413.4 小结 184第14章 HTTP协议内容 18514.1 请求行/状态行 18614.1.1 URL 18614.1.2 请求方法 18814.1.3 状态码/状态信息 18814.2 头部 19214.2.1 通用头部字段 19214.2.2 请求头部字段 19414.2.3 响应头部字段 19614.2.4 主体头部字段 19614.2.5 其他头部字段 19714.3 主体 19814.4 Cookie 19914.4.1 Cookie的分类 19914.4.2 Cookie的使用 19914.4.3 Cookie的缺陷 20014.4.4 Cookie与存储 20114.5 Cookie与状态 20414.5.1 状态存储 20514.5.2 状态获取 20714.5.3 基于token的认证方式更好 20714.6 小结 208第15章 HTTP请求优化 20915.1 减少连接/请求数 20915.1.1 减少请求 20915.1.2 减少连接 21015.2 缓存数据 21015.3 减少传输数据量 21015.4 优化网络链路 21015.4.1 减少域名 21115.4.2 使用CDN 21115.5 小结 211第16章 HTTP/2协议 21216.1 多路复用 21216.2 压缩 21416.3 支持TLS 21516.4 应用层协议协商 21516.5 服务器端推送 21516.6 流控制 21616.7 小结 216第17章 HTTPS协议 21717.1 HTTP的缺点 21717.1.1 通信使用明文 21717.1.2 不验证通信方身份 21817.1.3 无法证明报文的完整性 21817.2 理解HTTPS 21917.2.1 HTTPS通信流程 21917.2.2 密码学基础 22117.2.3 摘要与签名 22117.2.4 X.509与证书 22217.3 小结 223第18章 WebSocket协议 22418.1 WebSocket与HTTP 22418.2 WebSocket的使用 22418.2.1 客户端 22518.2.2 服务器端 22618.3 小结 227第19章 API 22819.1 REST 22819.1.1 REST API设计 22819.1.2 REST API工具 23019.2 GraphQL 23119.2.1 GraphQL设计 23219.2.2 GraphQL工具 23419.3 小结 235第20章 Node.js概述 23720.1 为什么要学习Node.js 23720.2 什么是Node.js 23820.3 Node.js的历史 23920.4 Node.js的结构 24020.5 Node.js的运行机制 24120.5.1 单线程 24120.5.2 事件循环 24220.6 学习Node.js的三个挑战 24420.6.1 I/O回调 24420.6.2 代码性能 24420.6.3 多进程协作 24520.7 小结 245第21章 用Node.js编写Web服务器端 24621.1 处理请求 24621.1.1 创建服务器端 24621.1.2 解析请求 24721.2 响应结果 25021.2.1 状态信息 25021.2.2 响应头部 25121.2.3 响应主体 25121.3 路由解析 25321.4 I/O操作 26021.4.1 文件 26021.4.2 数据库 26421.4.3 网络请求 26721.5 Web框架 27021.5.1 Express 27121.5.2 Koa 27121.6 小结 271第22章 Node.js内存控制 27322.1 内存限制 27322.2 内存管理 27622.2.1 内存分配 27622.2.2 内存回收 27622.3 内存泄漏 27722.3.1 缓存 27722.3.2 不断增长的数组 27922.3.3 重复的事件监听 27922.4 大内存处理 28122.5 小结 283第23章 Node.js多进程 28423.1 PM2模块 28423.1.1 安装与使用 28523.1.2 进程通信 28623.1.3 进程管理 28723.2 cluster模块 29023.2.1 基本使用 29123.2.2 进程通信 29423.2.3 进程管理 29423.3 child_process模块 29823.3.1 基本使用 29823.3.2 进程通信 29823.3.3 进程管理 30223.4 worker_threads模块 30323.4.1 基本使用 30323.4.2 线程通信 30423.4.3 线程管理 30523.5 小结 306第24章 Node.js调试与测试 30724.1 开发工具 30724.2 调试工具 30724.2.1 debug模块 30824.2.2 Node Inspector 30924.3 单元测试 31224.3.1 单元测试的意义 31224.3.2 单元测试代码编写原则 31224.3.3 测试框架 31424.3.4 测试风格 31624.3.5 测试指标 31724.4 小结 319 上一篇: shell脚本实战 第2版 [美]Brandon Perry 2019年版 下一篇: 智能就是算法吗 [荷]Antonin Tuynman 2019年版