全栈应用开发:精益实践
  • 推荐0
  • 收藏2
  • 浏览1.8K

全栈应用开发:精益实践

黄峰达 (作者)  李利健 (责任编辑)

  • 书  号:978-7-121-31369-1
  • 出版日期:2017-05-11
  • 页  数:400
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 维护人:董英
纸质版 ¥79.00
这不是一本深入前端、后台、运维、设计、分析等各个领域的书籍。本书以实践的方式,将这一系列的领域及理论知识结合到一起,来帮助读者构建全栈Web 开发的知识体系,并辅以精益及敏捷的思想,来一步步开发Web 应用:从创建一个UI 原型到编写出静态的前端页面;从静态的前端页面到带后台的应用,并部署应用;从Web 后台开发API 到开发移动Web 应用。
在这个过程中,我们还将介绍一些相辅相成的步骤:使用构建系统来加速Web 应用的开发;为应用添加数据分析工具来改进产品;使用分析工具来改善应用的性能;通过自动化部署来加快上线流程;从而帮助读者开发出一个真正可用的全栈 Web 应用。同时,我们也将帮助读者把这些步骤应用到现有的系统上,改进现有系统的开发流程。
前言
学习 Web 开发最难的不是学习相关技术,而是需要了解整个Web 开发的知识体系。多数时候并不是因为我们不学习,而是因为我们不知道学习什么。完整的知识体系不仅仅包括前端、后台开发,还应该包括持续集成、自动化部署等内容。这些往往需要几本不同的书才能学习到,另外,它们也难以保证知识体系的完整性。我们在学习的时候,也往往并没有注意到它们之间的联系。
本书可以为读者构建出清晰、完整的Web 开发体系,包括:前端、后台的技术选型,搭建构建系统,如何上线部署,并进行数据分析,以及如何在其中结合最好的工程实践等。希望作为读者的你,可以将本书当作一本索引书籍,以此来开启你的Web 开发新世界;你可以按书中的实践来进行Web 编程,并结合理论来实践。
为什么写这本书
本书是我在实习的时候特别想写的一些内容——关于如何系统地学习Web 开发,只是我一直缺少一条主线来将这些内容一一串起来。
2016 年年初,我在GitHub 上开源了一个名为Growth 的应用(读者可以在App Store和各大应用商店下载该软件)。在该应用中便包含了本书的主要思想:Web 应用的生命周期。在不断迭代的过程中,该应用越来越受开发者喜爱,至今已经有超过10000 名用户用过这个应用。随后,笔者在GitHub 上推出了开源电子书《Growth:全栈增长工程师指南》,已经有超过4500 个Star。由于电子书本身只是一个指南,越来越多的读者还希望有一本实战。也因此诞生了《Growth:全栈增长工程师实战》,其在GitHub 上也有超过1000 个Star。
后来,我才下决心去出版这样一本书。写一本书不是一件容易的事,相比较而言,读一本书则要简单许多。前者要花费一个人几个月的时间来完成,而后者只需要几星期、几天,或者是几小时的事。花几分钟将书的目录过一遍,随后只看几页想看的内容,余下的内容则可以在以后闲暇的日子里探索。
本书是我在编程生涯初期的一些体会,它更像是一本关于Web 开发的索引书籍,但其实这些索引正是我读了大量书籍后,自己对精髓之处进行的理解加工。在这本书里,你会看到我对很多知识点进行了概括,并以实践的方式将一个个知识点连接到一起。
在最开始的时候,我曾经想将书名命名为“实习记”。后来又觉得虽然这是在我实习期间学到的知识,但其实很多内容在其他公司是学不到的。因此,在电子书里将其命名为Growth,它不仅可以使读者增长知识,也在让我自己成长。
本书目标
本书的目标是帮助读者构建Web 应用的全栈开发所需要的完整知识体系,并以精益创业的思想来一步步开发Web 应用。
?? 从创建一个UI 原型到编写出静态的前端页面。
?? 从静态的前端页面到后台的应用,并部署应用。
?? 从Web 后台开发API 到开发移动Web 应用。
在这个过程中,我们还将介绍一些相辅相成的步骤:
?? 使用构建系统来加速Web 应用的开发。
为应用数据分析工具改进产品。
?? 使用分析工具改善应用的性能。
?? 通过自动化部署加快上线流程。
从而帮助读者开发出一个真正可用的全栈Web 应用。同时,我们也希望能帮助读者将这些步骤应用到现有的系统上,改进现有系统的开发流程。
本书结构
本书从结构上分成了3 部分,每部分都会有不同的侧重点。
第 1 部分:准备阶段
在这一部分里,我们将主要集中于编码前的一系列开发准备工作,从选择一个合适的IDE 到创建一个Web 应用的构建流。
第 1 章基础知识介绍了搭建开发所需要的基本环境,以及IDE、操作系统、版本管理工具等日常工具的选择与使用;还介绍了如何对一个目标进行切分,以便我们在实现的时候可以一步步往下实践。
第 2 章最小可行化应用介绍了如何使用UI 工具来创建原型,并根据这个原型创建出一个最简单的Web 应用;接着介绍了在Web 应用开发的过程中,如何使用精益的思想来开发出用户喜爱的产品。
第 3 章技术选型与业务对后台开发所需要的技术进行简单概览,并介绍了不同后台组件的框架,以及如何从这些框架中选择出合适的框架。同时还介绍了Python 下的Web开发框架Django,以及如何用这个框架创建一个“hello,world!”程序。
第 4 章构建系统及其工作流介绍 Web 应用中常见的构建流程及组件,以及如何结合Fabric 打造后台的构建系统。
第 2 部分:编码到上线
在这一部分里,我们主要讲述大部分Web 应用的开发过程,并介绍在开发过程中一些好的实践。
第 5 章编码 介绍了如何使用Django 创建一个简单的博客应用,以及如何使用单元测试、UI 测试来测试代码的功能。
第 6 章上线 介绍了如何手动部署开发的Web 应用到产品环境,以及如何使用自动部署工具来完成自动化部署。
第 7 章数据分析和体验优化介绍了如何使用网页监测工具来分析网页的流量来源、用户行为等,并结合一些前端、后台的优化工具对应用进行优化。
第 8 章持续集成与持续交付介绍了如何使用持续集成工具,以及如何使用持续集成工具来改进开发流程,并实现自动化的部署。
第 9 章移动 Web 与混合应用介绍如何结写后台API 来创建移动应用,以及如何为单页面应用提供SEO 支持。
第 3 部分:增量性优化
第 10 章遗留代码与重构介绍什么是遗留系统,以及如何基于第2 部分中的经验来改进遗留系统。
第 11 章增长与新架构介绍如何使用回顾与反馈来使程序员成长,以及如何依据需要设计出新的架构。
技术栈概述本书所介绍的工具主要集中于前端、后台、构建工具和前端UI 框架四部分,分别如下。
?? Django 是Python 语言的一个MVC 架构Web 开发框架。本书使用这个框架来介绍如何编写单元测试、功能测试,并演示如何使用它进行持续集成和持续部署。
?? Bootstrap 是一个在前端领域相当流行的响应式Web UI 开发框架,本书出于开发便捷的缘故使用这个框架。
?? Fabric 是一个命令行的自动化部署工具,本书使用这个框架来展示如何搭建构建系统,并使用它来进行自动化部署。
?? Angular 2 是一个可以用于构建移动应用和桌面Web 应用的开发平台,我们在书里用它来展示如何开发前后端分离的Web 应用程序。上面的几个框架可以构成跨手机、桌面的一个Web 应用,以及如何对其进行自动化部署。另外,还将介绍一些工具和框架来帮助我们开发:
?? Ionic 2 是一个跨平台(Android、iOS、Windows Phone)的混合应用开发框架,基于Angular 2 框架,并搭建有大量的UI 组件,以及原生组件,我们在书里说明它与Angular 2 如何共用代码来开发手机端应用。
?? Jenkins 是一个持续集成工具,它提供了持续集成与持续部署工具链中所需要的大部分工具。我们将用它来展示如何进行持续集成,并结合Fabric 来实现自动化部署。本书将展示如何结合这些工具来做一些最佳实践,读者不必担心它会影响你的阅读,并且这些工具也很容易找到相应的替代品。
代码
本书相关的代码都可以从GitHub 上下载到:https://github.com/phodal/growth-code。混合应用部分的代码可以从https://github.com/phodal/growth-paper-hybrid 处下载。这些代码遵循MIT 协议开源,读者可以将这些代码用于学习、商业等用途的项目中,不需要笔者同意。同时,笔者也不对这些代码的衍生代码负责。
遇到问题
在遇到问题时,欢迎及时与笔者联系。遇到代码问题时,建议直接在GitHub 上创建一个相关Issue,以便我们帮助其他读者解决同样的问题。
遇到内容不清楚等问题时,可以通过下面的方式联系笔者:
1. 通过GitHub 上的Growth 项目参与讨论:https://github.com/phodal/growth-code
2. 在Growth 论坛上讨论:https://forum.growth.ren/
3. 在微博上与我联系:@phodal
4. 通过邮件:h@phodal.com
5. 加入QQ 群讨论:529600394
你也可以在知乎、SegmentFault 网站上进行提问,并@phodal 来帮助你解决这个问题。
致谢
我要把这本书献给花仲马,没有她,就没有这本书。感谢她在这本书的写作过程中一直陪伴着我,并为这本书进行了中文校对来保证语句的通顺。同时,我想特别感谢ThoughtWorks 的同事薛倩、阿里巴巴的孙辉在本书创作过程中提供了详细的反馈,正是他们的帮助让本书更加准确、容易阅读。我还想特别感谢在ThoughtWorks 学习时的同事,为我提供悉心指导与帮助。特别感谢王超、陈卿、王妮、曹隆凯、张静强、刘杰、王磊,在和他们进行结对编程时,我学习到了敏捷软件开发、Tasking等编程之外的技能,感谢他们帮我走了这么远。
此外,还有那些在GitHub 上为我提供反馈的用户,正是他们的反馈促使这本书更加完整。由于人数众多,这里仅列出这些用户的ID:
感谢 ethan-funny、izhangzhihao、kaiguo、gymgle、aidewoode、wenzhixin、sasuke6、wangyufeng0615 、walterlv 、lolosssss 、NehzUx 、mikulely 、yulongjun 、PhilipTang 、ReadmeCritic、ReadmeCritic、wangcongyi、loveisbug 等用户为《Growth:全栈增长工程师指南》提供反馈与修改。
感谢 Pandoraemon、wo0d、ReadmeCritic、zhangmx、felixglow 等用户为《Growth:全栈增长工程师实战》提供了反馈与修改。
轻松注册成为博文视点社区用户(www.broadview.com.cn),扫码直达本书页面。
? 提交勘误:您对书中内容的修改意见可在提交勘误处提交,若被采纳,将获赠博文视点社区积分(在您购买电子书时,积分可用来抵扣相应金额)。
? 交流互动:在页面下方读者评论处留下您的疑问或观点,与我们和其他读者一同学习交流。
页面入口:http://www.broadview.com.cn/31369。

目录

第 0 章 绪论:Web 应用开发周期..................................................................................... 1
0.1 Web 应用的生命周期............................................................................................... 2
0.2 遗留系统与新架构................................................................................................... 3
0.3 技术选型与验证...................................................................................................... 4
0.4 搭建构建系统.......................................................................................................... 5
0.5 迭代........................................................................................................................ 6
0.6 Web 应用开发步骤.................................................................................................. 7
0.7 小结........................................................................................................................ 9
第 1 部分 准备阶段
第1 章 基础知识...............................................................................................................12
1.1 搭建开发环境........................................................................................................ 13
1.1.1 基本要素..................................................................................................... 13
1.1.2 常用效率工具及其在不同操作系统下的安装............................................... 14
1.1.3 搭建开发环境............................................................................................. 22
1.1.4 开发工具..................................................................................................... 23
1.2 版本控制............................................................................................................... 27
1.2.1 Git 初入...................................................................................................... 28
1.2.2 Git 工作流................................................................................................... 30
1.3 任务拆分............................................................................................................... 32
1.3.1 一本书的任务拆分...................................................................................... 32
1.3.2 一个功能的任务拆分................................................................................... 33
1.4 小结...................................................................................................................... 35
第 2 章 最小可行化应用....................................................................................................36
2.1 最小可行化产品.................................................................................................... 37
2.2 最小可行化Web 应用............................................................................................ 41
2.2.1 使用Bootstrap 模板..................................................................................... 41
2.2.2 完善原型..................................................................................................... 46
2.2.3 简单上线..................................................................................................... 47
2.3 精益与敏捷软件开发............................................................................................. 52
2.3.1 敏捷软件开发............................................................................................. 52
2.3.2 精益............................................................................................................ 56
2.4 小结...................................................................................................................... 58
第 3 章 技术选型与业务....................................................................................................59
3.1 技术选型............................................................................................................... 61
3.1.1 后端选型..................................................................................................... 63
3.1.2 数据持久化................................................................................................. 67
3.1.3 前端选型:UI 框架..................................................................................... 71
3.2 Django .................................................................................................................. 72
3.2.1 Django 简介............................................................................................... 72
3.2.2 安装Django ................................................................................................ 74
3.2.3 创建项目..................................................................................................... 77
3.3 从真实世界到代码................................................................................................. 83
3.3.1 模型、领域、抽象...................................................................................... 84
3.3.2 前后端分离................................................................................................. 88
3.4 小结...................................................................................................................... 90
第 4 章 构建系统及其工作流............................................................................................92
4.1 构建流.................................................................................................................. 93
4.1.1 搭建开发环境............................................................................................. 96
4.1.2 准备生产环境............................................................................................. 98
4.2 打造后端构建系统................................................................................................100
4.2.1 使用Fabric 搭建构建系统..........................................................................101
4.2.2 软件包管理................................................................................................107
4.3 小结.....................................................................................................................109
第 2 部分 编码到上线
第5 章 编码.....................................................................................................................112
5.1 创建首页应用.......................................................................................................114
5.1.1 生成首页应用............................................................................................115
5.1.2 编写第一个测试.........................................................................................122
5.1.3 使用Selenium 进行功能测试......................................................................124
5.1.4 如何编写测试............................................................................................128
5.2 创建博客应用.......................................................................................................134
5.2.1 创建应用与博客管理..................................................................................134
5.2.2 在页面上显示博客.....................................................................................141
5.3 数据与Web 应用开发...........................................................................................150
5.3.1 管理数据....................................................................................................151
5.3.2 显示数据....................................................................................................151
5.4 小结.....................................................................................................................152
第 6 章 上线.....................................................................................................................155
6.1 手动部署..............................................................................................................156
6.1.1 操作系统与服务器软件..............................................................................157
6.1.2 第一次部署应用.........................................................................................162
6.1.3 配置管理....................................................................................................176
6.2 自动化部署..........................................................................................................178
6.2.1 使用Fabric 自动化部署..............................................................................179
6.2.2 探索更优雅的方案.....................................................................................185
6.3 隔离与运行环境...................................................................................................187
6.4 小结.....................................................................................................................199
第 7 章 数据分析和性能优化..........................................................................................200
7.1 网站监测与分析...................................................................................................203
7.1.1 Google Analytics .........................................................................................203
7.1.2 自建监测和分析服务..................................................................................212
7.2 性能分析及优化...................................................................................................214
7.2.1 前端优化:用PageSpeed 工具分析和优化..................................................215
7.2.2 后台优化:使用应用性能管理工具.............................................................223
7.2.3 使用New Relic 进行优化............................................................................225
7.2.4 缓存初入....................................................................................................230
7.3 小结.....................................................................................................................234
第 8 章 持续集成与持续交付..........................................................................................236
8.1 持续集成与Jenkins...............................................................................................237
8.1.1 工具选择与Pipeline 设计...........................................................................239
8.1.2 Jenkins 搭建持续集成.................................................................................244
8.1.3 使用Jenkinsfile 简化流程...........................................................................252
8.2 持续交付与持续部署初探.....................................................................................255
8.2.1 持续交付....................................................................................................256
8.2.2 持续部署初探............................................................................................260
8.3 小结.....................................................................................................................261
第 9 章 移动Web 与混合应用........................................................................................263
9.1 移动 Web 与单页面应用......................................................................................264
9.1.1 单页面应用入门.........................................................................................266
9.1.2 API 设计与框架选型..................................................................................272
9.2 创建移动应用.......................................................................................................277
9.2.1 使用Ionic 2 创建应用.................................................................................278
9.2.2 更新首页....................................................................................................293
9.3 实现博客应用开发................................................................................................297
9.3.1 创建博客API.............................................................................................297
9.3.2 创建详情页和列表页..................................................................................302
9.4 用户登录与博客创建............................................................................................309
9.4.1 使用JWT 实现登录....................................................................................310
9.4.2 测试和发布应用.........................................................................................323
9.5 小结.....................................................................................................................325
第 3 部分 增量性优化
第10 章 遗留代码与重构................................................................................................328
10.1 遗留系统............................................................................................................330
10.1.1 什么是遗留系统.......................................................................................330
10.1.2 遗留系统改造...........................................................................................334
10.2 易读的代码与重构..............................................................................................336
10.2.1 命名.........................................................................................................337
10.2.2 一次只做一件事.......................................................................................339
10.2.3 减少重复代码...........................................................................................340
10.2.3 排版.........................................................................................................342
10.2.4 重构.........................................................................................................343
10.3 小结...................................................................................................................346
第 11 章 增长与新架构....................................................................................................348
11.1 增长...................................................................................................................350
11.1.1 增长:回顾与改变....................................................................................350
11.1.2 增长:技能学习与构建索引......................................................................354
11.2 设计新架构.........................................................................................................357
11.3 小结...................................................................................................................363
附 录
附录A 如何学习新的技术...............................................................................................366
附录 B 安装Piwik ...........................................................................................................372

读者评论

  • 你好有电子版吗?

    jet_xu发表于 2017/5/26 17:15:24
    • 读者朋友你好,这本书暂时还没有出电子书。

      博文小编发表于 2017/6/1 16:16:28

相关博文

  • Web应用开发周期

    Web应用开发周期

    管理员账号 2017-06-06

    小编说:这部分内容最早出自笔者写的文章《RePractise:Web开发的七天里》,原文简单描述了Web应用的生命周期。后来发现,这条路几乎是所有Web应用的必经之路。一个Web应用在其生命周期里,都要经历搭建开发环境、创建构建系统、...

    管理员账号 2017-06-06
    378 0 0 0
  • 探讨后端选型中不同语言及对应的Web框架

    探讨后端选型中不同语言及对应的Web框架

    管理员账号 2017-06-09

    小编说:在进行后端选型的时候,要选择的实际上是一个框架。后端领域所使用的技术和框架已经趋于稳定,我们只需要框架。当有多个框架适合时,再选择适合的语言。本文选自《全栈应用开发:精益实践》。 不得不指出的是,当我们喜欢一种语言的时候,...

    管理员账号 2017-06-09
    1216 0 0 0

相关图书

Python一行流:像专家一样写代码

Christian Mayer (作者) 苏丹 (译者)

本书专注于从初学迈向进阶的Python编码技术:如何像专家一样写出优雅、准确、简洁高效的Python 单行代码;阅读任意一行Python 代码时,如何系统性地对...

¥89.00

剑指Offer(专项强化版):数据结构与算法名企面试题精讲

何海涛 (作者)

本书全面、系统地总结了在准备程序员面试过程中必备的数据结构与算法。本书首先详细讨论整数、数组、链表、字符串、哈希表、栈、队列、二叉树、堆和前缀树等常用的数据结构...

¥89.00

C++服务器开发精髓

张远龙 (作者)

本书从操作系统原理角度讲解进行C++服务器开发所需掌握的技术栈。全书总计9章,第1~2章讲解C++ 11/14/17新标准中的常用特性、新增类库,以及C++开发...

 

PHP编程(第4版)

Rasmus Lerdorf(拉斯马斯·勒多夫), Kevin Tatroe(凯文·塔特罗), Peter MacIntyre(彼得·麦金太尔) (作者) 卢涛 (译者)

PHP是一种被广泛使用的Web编程语言,它简单易用,而且与时俱进,不断进化,提升性能。本书基于PHP 7.4,深入介绍 PHP编程技术,涵盖了 PHP 所有基本...

¥109.00

深入理解Spring Cloud与实战

方剑 (作者)

本书共分10章,主要介绍Spring Cloud各个核心组件的设计原理,以及目前流行的Spring Cloud Alibaba和 Netflix组件,并且剖析S...

¥106.00

基于Kotlin的Spring Boot微服务实战

袁康 (作者)

本书介绍了Kotlin在Spring Boot微服务开发中的实践,并使用Kotlin作为开发语言,介绍了函数式编程思想、Kotlin的语法、Kotlin在常用中...

¥69.30