前言

前言

像这个领域中的大多数人一样,我一直着迷于解决问题。虽然寻找解决方案时痛苦不堪,但找到后却无比欢欣——有什么能比得上这样的过程呢!年轻时我特别喜欢玩策略游戏,例如国际象棋,我从孩童起就开始玩了。《星际争霸》这个实时策略游戏,我已经玩了10年。还有万智牌,一种集换式卡片游戏,可理解为介于扑克和国际象棋之间的游戏。这些游戏为我提供了很多解决问题的机会。

上小学时,我学会了Pascal和基本的Flash编程。我兴奋坏了,又接着学习了Visual Basic、PHP和C语言,并利用我对<marquee><blink>标签的充分掌握以及对MySQL的粗浅理解,开始开发网站。没有什么能阻挡我,而且对解决问题的渴望没有就此结束,我又开始玩游戏了。

《网络创世纪》(简称UO)是一款大型多人在线角色扮演游戏(简称MMORPG),和其他游戏一样,我也沉迷于这个游戏很多年。后来,我发现了一个UO服务器的开源实现,叫RunUO1,完全使用C#开发。我所在的RunUO服务器的管理员没有编程经验,他们逐渐开始信任我,让我修正一些小缺陷,我们通过邮件来来回回地发送源码。我着迷了。C#是一门美妙而富有表现力的语言,而且用来开发UO服务器的开源软件友好且诱人,甚至不需要使用IDE(也不用知道IDE是什么),因为服务器能动态编译脚本文件。基本上,只需要在一个文件中写10~15行代码,继承Dragon类,就能在龙头上添加一个吓人的泡状文本框;或者覆盖一个方法,就能让龙吐出更多火球。这门语言和它的句法一点都不难学,在玩玩乐乐中就能学会。

1RunUO的网站地址是http://runuo.com,不过这个项目已经停止维护了。

后来,一个朋友告诉我,我可以靠编写C#代码为生。他说:“知道吗,真的有人愿意付费让你做这件事。”随后我又开始开发网站了,不过这一次我不是为了找乐子,也没有仅仅使用Front Page和一堆<marquee>标签。可是,对我来说,仍像是在玩游戏。

几年前,我读了《程序员修炼之道》2这本书,受到一些触动。这本书给出了很多可靠的建议,我强烈推荐你也读读。书中有个观点对我影响比较深:作者鼓励我们走出自己的安乐窝,尝试一些我们计划去做但还没有做的事。那时,我的安乐窝是C#和ASP.NET,所以我决定尝试Node.js。对于在服务器端做JavaScript开发,这是一个真真切切的类Unix平台。就那时我围绕微软的开发经验来说,这无疑是个突破。

2Andrew Hunt和David Thomas合著的这本书是永恒的经典之作,你一定要认真读一下。

我从这次尝试中学到了大量知识,还搭建了一个博客3,记录我在这个过程中学到的各种知识。大概半年之后,我决定把我在C#设计上多年积累的经验写成一本关于JavaScript的书。我联系了Manning出版社,他们欣然接受了我的请求,并帮助我做头脑风暴,把初步想法变得明确从容、简单明了。

3我的博客名为“Pony Foo”,地址是http://ponyfoo.com。我写的文章涉及Web、性能、渐进增强和JavaScript。

我花了很多时间和精力写这本书,表明了我对Web的热爱。这本书中包含一些关于应用设计和过程自动化的实用建议和最佳实践,能帮助你提升Web项目的质量。

目录

  • 版权声明
  • 献词
  • 前言
  • 关于本书
  • 关于封面
  • 致谢
  • 第一部分 构建过程
  • 第 1 章 构建优先
  • 第 2 章 编写构建任务,制定流程
  • 第 3 章 精通环境配置和开发流程
  • 第 4 章 发布、部署和监控
  • 第二部分 管理复杂度
  • 第 5 章 理解模块化和依赖管理
  • 第 6 章 理解JavaScript中的异步流程控制方法
  • 第 7 章 使用模型-视图-控制器模式
  • 第 8 章 测试JavaScript组件
  • 第 9 章 REST API设计和分层服务架构
  • 附录 A Node.js的模块
  • 附录 B 介绍Grunt
  • 附录 C 选择合适的构建工具
  • 附录 D JavaScript代码质量指南