多种网盘链接检测插件 购买前,请先检测网盘链接是否有效
《轻量级Web应用开发》_1
《轻量级Web应用开发》_2
《轻量级Web应用开发》_3
内容简介:
轻量级
Web应用开发
Qiu俊涛著
人民邮电出版社
北京
图书在版编目(CIP)数据
电出粗数25甲开发/Qiu俊涛者
北京:人民邮
I.①轻…Ⅱ.①Qiu…Ⅲ.①网 页一应用程序一程序
设计Ⅳ.①TP393.092
中guo版本图书馆CIP数据核字(2015)第128113号
内容提要
轻量级开发是一个很宽泛的主题,开发人员经常提到这个术语,但却少有人能够阐明它的内涵。本书
介绍了轻量级Web应用开发背后的核心理念和方法
全书共16章,介绍了环境配置与工具准备、Web应用服.务.器、数据库访问层、客.户.端框架、CSs框架、
客.户.端测试框架、现代的前端开发方式、编写更容易维护的 JavaScript代码、本地构建、持续集成、单元测
试与集成测试、环境搭建的自动化、应用程序发布、前端实例、后台实例、集成实例。除此之外,附录部
分还介绍了一些补充知识
本书适合软件开发人员以及对轻量级Web开发感兴趣的读者阅读
Qiu俊涛
责任编辑Chen冀康
责任印制张佳莹焦志炜
◆人民邮电出版社出版发行北京市丰台区成寿寺路11号
邮编100164电子邮件31s@ ptpress.ca
◆开本:800×10001/16
字数:424千字
2015年7月第1版
印数:1-2500册
2015年7月北京第1次印刷
定价:5500元
读者服务热线010)81055410印装质量热线010)8105531
反盗版热线010)8105531
前言
简单就是美
14年2月3ri,我创建了一个新的 Microsoft Word文档,开始编写本书。计划中,
这本书会包含很多方面,一些工具的使用方法,一些软件开发的“哲学”或者方法论
些公认为比较好的编程实践,以及尽可能真实地涉及一个Wb应用开发中的所有点…从
最初的简单需求,逐步演进成部署在真实环境中、可以被所有人访问到的真实程序
2004年,我第一次接触到UNX(一个运行在PC机上的 FreeBSD),当看到一些各司
其职的命令通过管道连接起来,然后流畅地处理很繁琐的任务时,就模糊地意识到“简单
的工具组合起来,将会发挥出极大威力”。当然,在随后更加深入的学习中,我才知道这
种体会只能算是处在“野蛮和蒙昧状态
但是也就是从那时候起,我就非常推崇轻量级的开发方式,包括轻量级的函数库、轻
量级的工具、轻量级的框架每个程序/模块都应该只处理自己的份内之事,仅此而已。将一
个艰巨而庞大的任务划分成小的模块,并对每个小的模块进行更精细的设计,得到的将是
系列相互独立、错误极少、更容易理解和维护的轻量级的工具集
甚至,在最理想的情况下,这些轻量级的工具集可以应用在不同的项目中,而实际
对于业务的编码则可能非常简单,只需要将这些工作良好的工具通过某种方式组合起来
简单就是美( Simple is Beautiful),没有人不赞同这个观点,当我们看到简洁的界面
计、清晰的程序接口时,无不被那种简单性所打动、所折服。但是要做到简单这一点绝非
易事,人们往往会自然地将事情复杂化。事先将各个模块的职责完全搞清楚几乎是不可能
的,而当项目进行中,要在有交付压力的情况下对代码做大规模的重构也是具有很大风险
的工作。
可能项目发起之初,项目的结构和代码会比较清晰简洁。但是当有多人合作开发,或
者需求没有被预期地变更,一些临时的解决方案渗入到代码库时,一些权宜之计也会被采
纳,代码库越来越庞大,越来越难以被理解。最后的结果可能是项目的失败,也可能是最
终不得不留守多人来维护这个遗留的代码库。
2前言
代码先行
2013年1月的一个周末,我在 Thought Works西安的办公室,如以往很多个周末一样,
享受着安静的巨大的独立办公室。从那时候开始,我就在为本书准备实例,我在之前长期
的读、写技术文章的经验中得到的体会是:例子是最好的老师,甚至是跨越语言(甚至是
自然语言)障碍的老师。作为程序员,你甚至可以读懂一份用法文写的关于如何使用 Sinatra
的文章—如果作者提供了足够清晰的例子的话。
断断续续地,我将项目中用到的技术实例抽取出来,做成足够小巧,而又能覆盖到足
够多特性的demo。到了5月,我要为 Thought Works的欧洲 Away Day准备一个演讲,主
题即为轻量级的web应用程序开发。虽然这个演讲由于时间关系被取消了,但是我在背后
做的很多计划和例子都固化了下来。10月,我在印度普内做完了一期 Thought Works大学
的讲师,难得地有了两周的空闲时间,于是开始整理前端开发的工作流以及工具的介绍等
也产生了很多的例
到了12月,以及2014年的1月份,我在guo内的一家公司做咨询服务,有了更多的时
间和精力投入到纯粹前端的开发中。由于工作本身主要是做咨询服务,如何将一项技术很
好地交付给团队的成员成了最关键的问题。所有的概念性的知识都是清晰而简洁的,但是
这种清晰和简洁,唯有通过实例将技术本身掌握之后,才能体会到。因此,我需要很精心
地准备每一个小例子,最终我得到了很多的例子。事后整理这些实例和心得时,我又发现
这些与具体项目有一定关联的例子可以做进一步的抽取,并将它们作为本书的素材。
这样做的好处有很多:在介绍一个概念时,我无需再一次绞尽脑汁去发明一个场景来
作为例子;另一方面,在介绍一项新技术时, Hello world(换言之,浅尝辄止)级别的介
绍只会给读者一种错觉:误以为这项技术很简单,而忽略了在实施过程中可能遇到的问题
也就是说,我希望通过例子,以及对例子的解释,真正将这些技术实施起来,而不仅仅是
看上去很美
工具与方法论
我曾经观察自己,以及其他程序员的工作方式,特别是 ThoughtWorks聪明的程序员
们。虽然不至于单调到千篇一律,但是这些高效的程序员都有或多或少的相似性
模块化、轻量级的根本原理来源于人类大脑的设计:每次只能关注一件事,某个时刻
只能做好一件事。说来容易,但是事实上想要做到这一点是非常困难的,程序员需要在实
前言3
践中不断积累,不断学习,才有可能发现简单的力量。完成一个软件的功能,对于一个熟
练的软件开发者来说并非难事,但是要让这个软件足够简单,以适应随后的变化,且在适
应的过程中保证软件的高质量,并不是一件容易的事情
本书组织结构
如果粗略地划分一下,本书可以分为三部分:第1章至第6章为基础工具及框架的介
绍,包括web框架,数据库访问层以及一些前端的技术等;第7章至第13章是一些编程
实践和Web应用周边的一些工具和框架的介绍,比如如何进行测试自动化,如何进行自动
部署等;第14章至第16章是一个具体的实例,这个实例从头到尾介绍了一个Web应用从
想法到实现,再到具体部署在一个真实的环境中的过程,其中包含了前后端开发、自动化
测试、自动化部署以及云平台的使用。
本书的各个章节的简要描述如
第1章,介绍了一些常用的工具如Shel编辑器、应用程序加速器等的使用,本书的
其他章节会频繁地使用这些工具。
第2章,介绍了Ruby下的web开发库Rack的原理、 Sinatra框架的使用方法以及使
用 Grape创建 RESTFul的API
第3章,所有的动态的web应用程序后台都有数据库持久层,如何将面向对象的世界
和面向关系的数据库连接起来是每个web框架都需要面对的主题。这一章讨论了
Active Record及 DataMapper的使用方法。
第4章,介绍了前端的模块化框架 Require. js、客.户.端的MVC框架 Backbone. js以及
第5章,详细讨论了CSs框架,包括 Foundation及 Bootstrap,讨论了两个框架的布
同方式、常用的组件等。
第6章,随着前端越来越重要, JavaScript代码在项目中占用的比重越来越高,相关的
测试也越来越重要,这里讨论了前端的测试框架 Jasmine和Moha的基本用法。
第7章,前端开发的形式已经不是用编辑器简单地编辑几个文件就可以了,现在的前
端开发已经有了完整的工作流:依赖管理,单元测试,合并并压缩 JS/CSS,动态加载等等。
这一章讨论现代的前端开发方式。
第8章,通过一个实例来介绍如何编写更容易维护、更容易扩展的前端代码,本章使
用了两种不同的开发思路来编写同一个实例,以便读者更好地理解可维护性。
第9章,介绍了如何减少重复劳动,将常见的动作自动化起来。这一章讨论了Ruby
|
|