-
内容大纲
本书是字节跳动资深前端工程师呕心沥血之作,也是目前市场上少有的从原理到实战深度剖析JavaScript生态中经典工具库的技术图书。全书共有6篇,分别是基础篇、图形学篇、多媒体篇、跨端开发篇、游戏开发篇和跨界实践篇,书中不仅详细介绍了JavaScript语言在浏览器页面之外的不同应用场景,更从实用技巧、设计理念、原理源码等角度对精心挑选的30多个工具库进行了全方位的解析,希望读者在领略JavaScript代码之美的同时,也能拓宽技术视野。为了帮助读者更好地理解书中所讲述的内容,随书代码仓库里提供了大量可运行的源码,包括精简版的库重写和完整的代码示例。 -
作者介绍
史文强,前端资深技术专家,现任字节跳动幸福里团队前端工程师、西安交通大学航天学院特聘软件工程师,华为云云享专家,曾受Google GDG(Google开发者社区)邀请进行技术分享。拥有丰富的实战经验,擅长大型前端系统架构设计、性能优化及工程化体系建设。 活跃于各大前端技术社区,撰写了《Node.js原理&源码赏析》《带着Canvas去流浪》《响应式编程的思维艺术》等多个连载专题,累计发表前端技术原创博文百余篇,曾获2018年华为云社区杰出贡献奖(暨年度十大技术博主)。 -
目录
前言
基础篇
第1章 Mock.js:如何与后端潇洒分手
1.1 为什么你总是下不了班
1.2 联调加速
1.3 使用Mock.js
1.3.1 Mock.js的语法规范
1.3.2 Mock.js实战
1.3.3 自定义扩展
1.4 Mock.js的基本原理
1.4.1 从模板到数据
1.4.2 为Ajax请求提供Mock数据
1.5 从Mock服务到API管理平台
第2章 Node.js:连接
2.1 大话Node.js
2.1.1 Node.js是什么
2.1.2 Node.js能做什么
2.1.3 招黑的JavaScript全栈工程师
2.2 业界用Node.js做什么
2.2.1 前端工程化
2.2.2 中间层
2.2.3 SSR引擎
2.2.4 协作连接
2.3 小结
第3章 ESLint:你的代码里藏着你的优雅
3.1 代码风格与破窗理论
3.2 用editorconfig配置IDE
3.2.1 基本语法及属性
3.2.2 配置实例
3.3 使用ESLint规范编程风格
3.3.1 配置文件和规则集
3.3.2 ESLint插件开发实战
3.3.3 初学者的修行
3.4 新秀工具Prettier
3.5 静态类型检查工具的实现原理
3.5.1 编译语言和解释语言
3.5.2 编译流程
3.5.3 编译简单的JavaScript程序
第4章 模块演义与Require.js
4.1 模块化的需求推演
4.1.1 script标签
4.1.2 代码隔离
4.1.3 依赖管理
4.2 模块规范大杂烩
4.2.1 概述
4.2.2 几个重要的差异
4.3 模块化规范的兼容与工具演进
4.4 Require.js的使用方法
4.5 Require.js的核心原理
第5章 Lodash.js是工具,更是秘籍
5.1 Lodash.js是什么
5.1.1 概述
5.1.2 代码的较量
5.2 重点API的剖析
5.3 Lodash.js的源码结构
5.3.1 基本结构
5.3.2 Lodash.js源码的学习方法
第6章 静态类型检查:Flow.js和TypeScript
6.1 静态类型检查
6.1.1 静态类型检查的优势
6.1.2 静态类型检查的劣势
6.2 Flow.js,易上手的静态类型检查工具
6.2.1 Flow.js中的类型标注
6.2.2 Flow.js的优势
6.3 TypeScript,另一种选择
第7章 用函数描述世界:Ramda.js
7.1 本能的思考方式
7.2 开始编码
7.2.1 传统编程的实现
7.2.2 函数式编程的推演
7.2.3 函数式编程的意义
7.2.4 函数式编程的基本理论
7.3 基于Ramda.js体验函数式编程
7.3.1 使用Ramda.js
7.3.2 函数化的流程控制
7.4 选择
第8章 Rxjs:前端世界的“老人与海”
8.1 信息管道
8.1.1 不同的“单一职责”
8.1.2 分布式状态的可能性
8.1.3 你的程序在做什么
8.2 数据的生产
8.2.1 数据源的抽象
8.2.2 设计模式的应用
8.3 Rxjs:一切皆是流的世界
8.3.1 Rxjs的核心概念
8.3.2 Rxjs应用实例
8.3.3 新版“老人与海”
8.4 以自己喜欢的方式去编程
第9章 不可变数据的制造艺术:Immer.js和Immutable.js
9.1 克隆
9.1.1 浅克隆
9.1.2 深克隆
9.2 元编程与Immer.js
9.2.1 元编程
9.2.2 Immer.js的核心原理
9.3 Immutable.js与共享结构
9.3.1 Immutable.js简介
9.3.2 Immutable.js的核心原理
9.3.3 Immutable.js中的读写操作
9.4 小结
第10章 Day.js:算个日期能有多难
10.1 日期和时间
10.2 使用Day.js
10.3 国际化应用开发中的时间处理
图形学篇
第11章 所见即所得的流程图:jsplumb.js和viz.js
11.1 方案构思
11.2 开始使用jsplumb.js
11.3 图布局引擎viz.js
11.4 所见即所得
第12章 easel.js:一个标签一个世界
12.1 能玩一生的标签<canvas>
12.1.1 基本语法介绍
12.1.2 动画模式
12.2 用easel.js操作Canvas
12.3 工具库的封装技巧
第13章 Echarts.js:看见
13.1 数据可视化生态
13.2 开始使用Echarts.js
13.2.1 Echarts的正确打开方式
13.2.2 重点API
13.2.3 配置项
13.3 数据可视化三步曲
13.3.1 数据准备
13.3.2 图表选型
13.3.3 细节打磨
13.4 下一步的选择
第14章 SVG变形记
14.1 矢量图的世界
14.1.1 SVG图形
14.1.2 SVG的高级功能
14.2 SVG变形
14.2.1 SVG动画与CSS3动画
14.2.2 经典SVG动画
14.3 Snap.svg快速入门
14.3.1 Snap方法集
14.3.2 Snap.svg实战
14.4 取舍
第15章 Three.js:构建立体的用户界面
15.1 三维世界的脚手架Three.js
15.1.1 核心概念
15.1.2 分解网格模型
15.1.3 Three.js的基本使用方法
15.2 实战:用Three.js制作漫威电影片头动画
15.2.1 特效一:平面渐离
15.2.2 特效二:字体浮雕模型
15.2.3 特效三:视频纹理贴图
15.2.4 特效四:镜头转换
15.3 Three.js如何参与渲染
15.3.1 相机模式和降维打击
15.3.2 着色器
15.3.3 WebGL的渲染流程
15.4 用Cinema4D玩转跨界
多媒体篇
第16章 Impress.js:网页里的PPT
16.1 Impress.js的应用及原理
16.1.1 快速上手Impress.js
16.1.2 Impress.js的实现原理
16.2 详解CSS变形和动画
16.2.1 帧和关键帧
16.2.2 CSS补间动画
16.3 软技能:PPT设计
16.3.1 内容为王
16.3.2 设计入门课
第17章 Velocity.js与高性能动画之谜
17.1 CSS动画和JavaScript动画
17.1.1 CSS动画
17.1.2 JavaScript动画
17.2 Velocity.js入门指南
17.2.1 stagger交错动画
17.2.2 在SPA框架中编写动画
17.3 高性能动画的秘密
17.3.1 像素渲染管线
17.3.2 回流、重绘与合成
17.3.3 使用合成层获得高性能
17.3.4 隐式提升陷阱
17.4 小结
第18章 扭曲时间:tween.js和jQuery Easing Plugin
18.1 缓动函数
18.2 贝赛尔曲线
18.2.1 绘制原理
18.2.2 贝赛尔曲线的特性
18.3 使用Tween.js和jQuery Easing Plugin
18.4 选择恰当的缓动函数
第19章 用Recorder.js实现语音信号处理
19.1 百度语音识别实战
19.1.1 工业系统测量的预备知识
19.1.2 改造Recorder.js
19.2 Web Audio API的工作模式
19.2.1 中间件式的音频处理图
19.2.2 Recorder.js核心原理:Script-ProcessorNode
19.2.3 浅谈ArrayBuffer
第20章 jsmpeg.js流媒体播放器
20.1 视频编解码技术入门
20.1.1 基础知识
20.1.2 初识传输流
20.2 现代浏览器中的播放技术
20.2.1 Media Source Extension
20.2.2 其他格式的媒体资源
20.3 切片技术与TS文件解析
20.3.1 文件切片技术
20.3.2 解析TS切片
20.4 jsmpeg.js源码结构和低延迟播放实例
跨端开发篇
第21章 “懒”是第一生产力:制作命令行工具
21.1 Commander.js与Git风格的命令行工具
21.2 Inquirer.js与交互式命令行工具
21.3 从工具化到工程化
第22章 用Shelljs实现自动化部署
22.1 Linux入门小课
22.2 实用的跨平台工具
22.3 实战:使用Shelljs和node-ssh完成自动化部署
22.4 下一站:性能监控
第23章 跨端技术的秘密
23.1 Cordova的前世今生
23.2 React Native
23.3 小程序
23.4 原生App与网页的通信
23.5 小结
第24章 protobuf与二进制消息
24.1 前端常见的消息格式
24.2 二进制消息格式:protobuf
24.3 使用protobuf.js
24.4 初探gRPC
第25章 控制反转与Inversify.js
25.1 依赖为什么需要注入
25.2 IOC容器的实现
25.3 AOP和装饰器
25.4 用Inversify.js实现依赖注入
25.5 小结
游戏开发篇
第26章 基于CreateJS解构游戏开发
26.1 工具包CreateJS
26.2 实战开发:《飞龙大战》
26.3 性能提升技巧
第27章 经典物理与matter.js
27.1 经典力学回顾
27.2 仿真的实现原理
27.2.1 基本动力学模拟
27.2.2 碰撞模拟
27.3 物理引擎matter.js
27.3.1 《愤怒的小鸟》的物理特性分析
27.3.2 使用matter.js构建物理模型
27.3.3 物理引擎如何牵手游戏引擎
第28章 Phaser:从工具到生态
28.1 快速上手Phaser游戏开发
28.2 浅谈框架的选择
跨界实践篇
第29章 brain.js:写给前端的神经网络入门课
29.1 从关键词开始
29.2 认识神经网络
29.2.1 基本结构
29.2.2 神经元的数学模型
29.2.3 激活函数与非线性决策边界
29.2.4 神经网络中的信息传递
29.3 使用brain.js构建神经网络
29.4 小结
第30章 TensorFlow.js:开箱即用的深度学习工具
30.1 上手TensorFlow.js
30.2 使用TensorFlow.js构建卷积神经网络
30.2.1 卷积神经网络
30.2.2 搭建LeNet-5模型
30.3 基于迁移学习的语音指令识别
第31章 用JavaScript玩转物联网
31.1 入门级物联网“玩具”Arduino
31.1.1 Arduino UNO R3板卡结构
31.1.2 模拟量和数字量
31.1.3 Arduino原生编程入门
31.1.4 Arduino实验示例一:按钮控制三色LED灯
31.1.5 Arduino实验示例二:使用DHT11模块采集温湿度信息
31.2 PC与MCU之间的串口通信
31.3 使用Johnny-Five进行嵌入式开发
31.3.1 初识Johnny-Five
31.3.2 Firmata.js源码导读
31.3.3 舵机风扇实验
31.4 小结
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-
孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-
时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-
本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...