全新正版 极速发货
¥ 89.18 6.5折 ¥ 138 全新
库存5件
作者顾鲍尔
出版社清华大学出版社
ISBN9787302577386
出版时间2022-12
装帧平装
开本16开
定价138元
货号1202777348
上书时间2024-05-31
Web全栈开发人员更像是软件工程中文艺复兴时期的参与者,“只要他愿意,任何事情似乎
都能被实现”。这类人通常拥有一定的设计经验,可以编写用户界面,组合多种算法并在不同的
业务逻辑中获取、处理各种数据。从数据库连接到浏览器,他们管理着拥有成千上万名用户的互
联网产品,使其连绵不绝地提供对外输出的价值。
这一切得益于前、后端技术的高速发展,丰富的技术栈和脚手架加快了项目收益与时间的转
化率。其中较具代表性的当数Python与JavaScript。开发高效、上手简单以及丰富的开发者生态
都是极客们乐意选择它们的原因,然而它们带来的性能问题一直是开发者头上的“紧箍咒”。尤
其是素有“雷厉风行般开发效率”的Python Web框架Django,臃肿的内部加载及过大的系统资
源消耗至今依然是大家对其固有的印象。同样,JavaScript因历史包袱太重也显得捉襟见肘。
随着科技技术的日新月异,“物极必反,否极泰来”正逐步使得软件工程在生产效率和性能
之间趋向某种平衡,打破“成见”也是我写本书的原因。庆幸自己在2013年开始接触这两种前、
后端语言,并与它们一起见证了国内互联网的蓬勃发展。
这些年来的知识积累,使我从早期的游戏行业一路辗转到了传统的互联网电商行业,而今在
一个全新的领域中从事基础架构的工作。对于和Python的结缘,是在我编写《Lua Love2d教程》
的时候,意外地发现同样可作为嵌入式脚本的Python,相较于Lua有着更为成熟的面向对象特
性,此后便一发不可收拾。那时候Python在各个领域中的技术生态已经相当成熟,如我曾经使
用Twisted开发过游戏服务器,这使我第一次对异步编程有了一定的了解,之后我又陆续接触到
了诸如Tornado、Flask及Django等Web框架。
有意思的是,当时前端技术的发展速度似乎并不像现在这样很快就能得到公司技术团队的响
应,主流的技术更多还是jQuery、art-template和Gulp,而Sass、CoffeeScript也是后来的事。直
到Backbone.js的出现,才让我意识到前端开发也能引入设计模式,并能像软件工程化一样形成
体系。也正因如此,上手Vue.js也就变成很自然而然的事。
回馈“社区”一直是我打发日常闲散时间的乐趣,从最开始的Regal引擎到各种Celery插
件,再到基于Django编写的动态绘制矩阵网格工具,这使我收获了许多同行挚友,也使我有幸
在2015年被邀请在“深圳大学及深港产学研基地”的报告厅做了第一次大型的Python技术分享。
此后的一段时间,我便在多个Python技术培训中与许多同行和准同行的普通开发者进行交流,
多年的一线工作经验让我非常能够理解他们在学习中的痛点和困惑。我深知“全栈”并不仅仅是
学会某些特定的前、后端开发语言,也不是为了构建一个具有前、后端交互的动态网页,而是一
种解决问题的全栈思维。
于是在2017年,我在Github首次发起了Vue X语言开源项目,作为小试牛刀,先后发布
了SpringBoot-vue和Sanic-vue,结果反响超乎预期。这一切最终促成了我希望写一本大家想看、
能看、会看的图书。
本书内容及体系结构
本书分四部分。
第一部分为基础篇(第1~3章),主要介绍现代Web应用开发从早期的多页应用演进到
单页应用的发展历程;抛开框架,从实践中探究单页应用背后的机制;逐一系统性地从计算机科
学体系中掌握异步并发、I/O以及HTTP2协议等当前Web开发的核心技术;梳理Python语言在
目前版本中的改进及建议,着重介绍ECMAScript的核心语法,为后续章节的学习打下基础。
第二部分为Vue.js篇(第4~7章),除了着重讲解掌握Vue.js关键技术的核心知识外,深
入浅出地介绍前端工程化的编译、打包的高级技巧,通过实战案例分享更多目前前端领域较新的
优化加速方案。
第三部分为Django篇(第8~11章),介绍Django 2.x与Django RESTFramework框架的
核心知识、Django ORM源码和正确运用方法、Django Channels与Django 3.x版本的异步视图,
以及WSGI许多鲜为人知的优化技巧。最后,本部分在Django的基础上通过WSGI、PyPy与
AsyncIO或Gevent的结合,全面介绍最新的Django异步并发的实战方案。
第四部分为综合案例篇(第12章)。无论是Vue.js还是Django,框架仅仅只是任何项目中
的某个载体而非关键,尤其在分布式项目中,各个零部件都有可能造成性能瓶颈。通过学习本篇,
读者不仅能熟练运用Django、Channels,而且能认识到RPC通信、Agent技术及WebSocket也是
全栈开发中必不可少的技术栈。
本书读者对象
.想了解全栈技术的任何前、后端开发人员;
.具备JavaScript语言基础的初学者;
前 言
V
.jQuery前端开发者;
.Vue.js技术开发者;
.具备Python语言基础的初学者;
.Python语言进阶读者;
.Python Web技术开发者;
.Django技术开发者;
.系统架构师、运维人员;
.相关培训学员;
.各大院校的学生;
.准备面试的求职者。
说明:
本书力求不限定依赖于某些框架知识,即使没有使用过Django或Vue.js,读者也可以使用本
书。虽然读者可以单独学习每一章,但笔者仍建议读者通读全书,以便于系统地回顾和复习完整
的知识脉络。如果您是一名经验丰富的Python开发者,可以直接阅读本书的第7章、第10章、
第11章以及第12章进行参考。
勘误和支持
如果您感兴趣
本书为读者提供更多的细节、技巧方面的提升,并在前、后端领域都给予了充分的技术视野,
确保在任何技术学习的深度上打下基础。除了可以与笔者进行邮件互动外,读者还可以结合本书
查阅互联网上更多的技术资料进行参考。
致谢
感谢这么多年来所待过的公司、遇到的同事,正因为你们的优秀才促使笔者有能力写完本书。
感谢为本书撰写推荐语的行业翘楚,正因过去你们的支持和帮助,笔者才能一步一个脚印地
成长。
感谢热衷于在Github开源技术分享的爱好者,没有你们的推动,全栈技术不可能发展得如
此迅速。
感谢清华大学出版社的编辑,在本书的编写过程中给予很多细致的指导和建议,没有你们就
没有本书的诞生。同时,感谢出版社的许多工作人员为本书最终出版所付出的努力。
感谢在撰写本书时陪伴我的好友。
感谢父母的养育之恩,以及多年来在生活上对我的照顾。
顾鲍尔
2022年4月
本书并非简单地介绍两种语言和框架API相关的图书,而是以Django与Vue.js为载体,诠释前、后端技术生态中**的优化方案和思路。 本书主要内容包括网络编程与异步并发的基础,软件工程的设计模式在前端技术中的演进,从Vue.js的核心开发指南到Webpack编译打包的优化经验分享,Web/Service Workers与WebSocket为Vue.js实现多线程离线加速,揭秘Vue.js全方位异步惰性加载优化,Django、PyPy、WSGI和Gevent的全套异步方案实战,Asyncio、gRPC、Channels与Django的分布式应用实战,Python Agent技术分享。 本书内容丰富、案例众多,适合想了解全栈技术的前、后端开发人员学习使用,也可作为相关培训机构、开设相关专业课程院校的教材。
顾鲍尔(Boyle Gu),拥有4项国家发明专利,出版《Lua Love2d教程》一书,目前就职于中国兵器和阿里巴巴合资成立的千寻位置,负责基础架构体系平台建设工作。曾任职于韩国NCSOFT、搜狐畅游、上汽集团。2015年在深圳大学百人礼堂分享Python及其企业应用。组织过Golang在线直播培训。工作之余热衷开源,开发并维护着“Regal灰度发布引擎” “SpringBoot-vue”“Sanic-vue”和“vue-lazyload-text”等开源项目。
第一篇 基础篇
第1章 现代Web应用开发:全新的纪元 2
1.1 单页应用概述 2
1.1.1 从此不必刷新浏览器 2
1.1.2 前端需要深入业务 3
1.1.3 SPA如何工作 4
1.1.4 闲聊MVVM设计模式 11
1.1.5 与服务器端通信 12
1.1.6 SPA的优点和缺点 18
1.2 异步与协程 20
1.2.1 程序、进程、线程与协程 20
1.2.2 并发基础 23
1.2.3 I/O漫聊 25
1.2.4 反应式模式:epoll与Event Loop 26
1.3 HTTP那些事儿27
1.3.1 HTTP 2的重要性 27
1.3.2 大话协议 28
1.3.3 HTTP 2的六板斧 28
1.3.4 下一代的革命:HTTP 3 30
第2章 ECMAScript与Python 3 31
2.1 JavaScript简史31
2.2 初识ECMAScript 2015 32
2.2.1 ECMAScript与JavaScript的不同 32
2.2.2 ECMAScript 2015有哪些变化 32
2.2.3 不可不知的DOM 39
2.2.4 BOM简介 40
2.3 新一代Python简述 40
2.3.1 经验之谈:为什么是Python 40
2.3.2 新版本的性能改进 41
2.3.3 深究CPython 3.6的垃圾回收与建议 43
第3章 ECMAScript 2015 47
3.1 搭建运行ECMAScript开发环境 47
3.1.1 包管理工具NPM 47
3.1.2 安装ECMAScript 2015开发环境 48
3.1.3 配置JavaScript编辑器 51
3.2 ECMAScript 2015必知54
3.2.1 let和const 54
3.2.2 for循环 55
3.2.3 箭头函数 57
3.2.4 默认参数 57
3.2.5 参数的扩展—Spread操作符 58
3.2.6 数据结构Map和原生对象59
第二篇Vue篇
3.2.7 数据结构Set 61
3.2.8 迭代器工具 61
3.2.9 详解生成器 63
3.2.10 面向对象编程 65
3.2.11 面向对象编程进阶 70
3.2.12 实战:利用ES 2015开发仿“反恐精英
CS”游戏 74
第4章 Vue.js化繁为简 82
4.1 初见Vue.js 82
4.1.1 解决了什么问题 82
4.1.2 Vue.js与jQuery的区别 83
4.1.3 揭秘虚拟DOM 84
4.2 上手Vue.js 86
4.2.1 最简化安装 86
4.2.2 分析由Vue.js构建网页87
4.2.3 数据如何渲染 91
4.2.4 必须了解的生命周期93
4.3 常用模板语法指令 98
4.3.1 v-if/v-else/v-else-if指令 98
4.3.2 v-show指令 100
4.3.3 v-for指令 100
4.3.4 v-bind指令102
4.3.5 v-on指令 103
4.4 一招学会事件处理器 104
4.5 不得不懂的计算属性和侦听器 105
4.5.1 计算属性 105
4.5.2 侦听器 106
4.6 常用的表单处理 107
4.6.1 v-model指令 107
4.6.2 省力的修饰符 110
第5章 Vue.js进阶 111
5.1 深入组件 111
5.1.1 快速入门 111
5.1.2 父组件与子组件间的数据通信 113
5.1.3 不同组件间的数据通信117
5.2 掌握状态管理Vuex 118
5.2.1 初始化Vuex 118
5.2.2 state、mutation、action 119
5.2.3 getter的使用 125
5.2.4 Vuex辅助函数126
5.2.5 Vuex的经验之谈128
5.3 SPA必备:路由130
5.3.1 Vue 路由基础130
5.3.2 常规路由匹配 131
5.3.3 路由匹配 135
5.3.4 编程式导航 136
第6章前端工程化Webpack 4及部署 137
6.1 vue-cli打包编译 137
6.2 取代CLI,从“零”揭秘Webpack 4 138
6.3 基础配置 141
6.4 配置开发服务器 145
6.5 配置生产的编译构建环境 148
6.6 基于HTTP 2的Nginx部署 153
第7章 加速Vue.js项目 155
7.1 打包优化与异步Vue.js 155
7.1.1 Webpack打包的工作机制 155
7.1.2 惰性加载 156
7.1.3 动态导入 157
7.1.4 异步组件 157
7.1.5 异步路由 159
7.1.6 大型项目中异步Vuex解决方案 159
7.1.7 打包优化中的反模式 165
7.2 图片惰性加载的实现原理 167
7.2.1 IntersectionObserver API介绍 167
7.2.2 在Vue.js中如何实现 168
7.2.3 性能之谈 169
7.3 大文本惰性加载实战 171
7.3.1 定制组件 172
7.3.2 指令:v-lazyload-text 173
7.3.3 与服务器端对接 173
7.4 优化资源优先级 174
7.5 进击的性能Web Workers 176
7.5.1 Web Workers与线程 176
7.5.2 在Vue.js中如何实现 176
7.5.3 Vue.js多线程实战 178
7.5.4 Web Workers的限制 183
7.6 离线优先Service Worker 184
7.6.1 编写Service Worker注册脚本 188
7.6.2 构建Service Worker 191
7.6.3 运行和调试 193
7.6.4 Service Workers与Web Workers的
区别 194
7.7 新一代图片格式WebP 194
7.7.1 WebP及其优缺点 194
7.7.2 在Vue.js中如何实现 195
7.8 Web性能监测利器:Lighthouse 196
7.8.1 在开发者工具中运行 197
7.8.2 在命令行中运行 197
7.8.3 在Chrome扩展程序中运行 198
第三篇 Django篇
第8章 认识Django 200
8.1 解读Django架构 200
8.1.1 全新视角的松耦合设计 200
8.1.2 Django“视图”的正确理解 201
8.1.3 Django项目结构实践 202
8.1.4 创建自己的Django应用程序 205
8.1.5 URLconfs—Django路由 206
8.1.6 快速开发HTTP接口 207
8.2 正确入手:Django ORM 209
8.2.1 从社交应用程序中掌握ORM 209
8.2.2 模型定义的最佳实践 213
8.2.3 QuerySets基础 215
8.2.4 教你手写Active Record设计模式 217
第9章 理解Django REST Framework 219
9.1 为什么使用DRF 219
9.2 核心速学手册 220
9.2.1 序列化 221
9.2.2 DRF的视图与路由 222
9.2.3 ModelSerializer源码揭秘与更多实例224
9.2.4 认证与权限 231
9.2.5 DRF动态绘制表单的设计模式 235
9.3 实战:用于SPA的无状态RESTful服务
器端接口239
9.3.1 介绍 239
9.3.2 JWT用户认证 244
9.3.3 分页 247
9.3.4 正确返回及错误输出249
9.3.5 单元测试 250
9.3.6 性能检测 252
第10章 Django生产部署的艺术 253
10.1 准备 253
10.1.1 剪裁Django253
10.1.2 生产/测试开发环境隔离 255
10.1.3 日志 258
10.2 部署 259
10.2.1 WSGI介绍 260
10.2.2 uWSGI基础 261
10.2.3 uWSGI加速与KSM技术内存
抗泄 263
10.2.4 深入理解uWSGI启动的机制 266
10.2.5 结合Nginx与轻量化测试wrk 268
10.3 换台“发动机”—PyPy 3 270
10.3.1 Stackless的无堆栈与PyPy 3
新特性 271
10.3.2 PyPy 3 uWSGI Django 2生产实战
心得 274
第11章终极优化Django 280
11.1 WSGI与Django 280
11.1.1 WSGI内存管理与OOM现象 280
11.1.2 一种内存预热的方式:重构WSGI282
11.2 QuerySets优化与设计模式 286
11.2.1 QuerySets深度优化287
11.2.2 解读Django 2最新QuerySets
源码 291
11.2.3 设计“单例模型”减少数据库
连接 295
11.2.4 有限状态机在Django模型中的
实践 297
11.3 Django REST Framework优化指南 303
11.3.1 适当简化DRF 303
11.3.2 Varnish每秒进击45K并发 305
11.3.3 DRF 3.10.3版本的高性能揭秘 306
11.4 第二代Django Channels 308
11.4.1 Asyncio基础 308
11.4.2 Asyncio高并发实践 310
11.4.3 再谈Asyncio与Gevent 312
11.4.4 Asyncio与Django 313
11.4.5 理解Django Channels 313
11.5 Django 3的异步驱动314
第四篇 综合案例篇
第12章 打造企业级分布式应用服务 318
12.1 功能与需求介绍 318
12.2 系统架构设计及环境说明 319
12.3 构建前端页面 320
12.3.1 用户交互设计 321
12.3.2 Vue.js开发环境搭建 321
12.3.3 构建页面布局 323
12.3.4 创建Vue.js路由 327
12.3.5 前端组件开发及通信 328
12.3.6 表单验证 337
12.4 客户端Agent技术 339
12.4.1 守护进程与后台程序 339
12.4.2 编写Agent框架 340
12.4.4 开发HTTP接口 345
12.4.5 Agent嵌入异步Web服务 346
12.4.6 asyncio.gather的妙用 348
12.5 gRPC服务 350
12.5.1 编写ProtoBuf生成原型文件 350
12.5.2 服务器端开发 352
12.5.3 Agent的gRPC客户端开发 353
12.5.4 Asyncio异步gRPC 355
12.6 Django应用服务器 357
12.6.1 搭建Django项目脚手架 357
12.6.2 REST接口 358
12.6.3 前、后端接口交互 359
12.7 Django Channels实战 361
12.7.1 架构机制 361
12.7.2 安装与Channels路由配置 362
12.7.3 开发Consumer 364
12.7.4 gRPC与Django Channels的融合 365
12.7.5 Web应用编程接口:WebSocket API 366
12.7.6 Ch
Vue.js+Django高性能全栈论道、
全新北京
¥ 88.32
Vue.js+Django高性能全栈论道
全新武汉
¥ 91.12
Vue.js+Django高性能全栈论道
全新成都
¥ 95.72
Vue.js+Django高性能全栈论道
九五品廊坊
¥ 75.87
Vue.js+Django高性能全栈论道
九品北京
¥ 71.16
Vue.js+Django高性能全栈论道
九品北京
¥ 71.02
Vue.js+Django高性能全栈论道
九品北京
¥ 70.58
Vue.js+Django高性能全栈论道
全新广州
¥ 89.17
Vue.js+Django高性能全栈论道
全新广州
¥ 89.16
Vue.js+Django高性能全栈论道、
全新北京
¥ 88.32
— 没有更多了 —
以下为对购买帮助不大的评价