《AngularJS深度剖析与最佳实践》推荐序

这是一本具有强烈ThoughtWorks项目风格的书。书中打造的实战项目,完全遵循了ThoughtWorks工程实践,一步一步从最初的Skeleton通过快速迭代逐步丰富项目的骨肉,并在这个过程中抽丝剥茧地展现了AngularJS的诸多特性与技巧,如循循善诱的导师一步步指导着你从AngularJS的小工走向专家。

这里所谓的“专家”不仅仅是指你对AngularJS的诸多技巧尽皆了然于胸,能够挥洒自如地运用于项目开发中——若能如此,不过是“唯手熟尔”的工匠罢了。真正的专家需要从大处着手,挖掘这门技术背后隐含的设计思想与哲学,换言之,需要知其所以然;却又不偏废细节,锱铢必较每个变量函数的命名格式,使代码臻于完美,并从中提炼出能够推而广之的最佳实践。

从知其所以然入手,书中的整个第五章《背后的原理》加强了内容的深度,使得本书不致于沦落为一本Example Step by Step。书中通过对MVVM模式的阐释,解释了Angular的设计原理与启动流程,并给出了Angular开发的注意事项。书中写道:

MVVM模式的要点是:以领域Model为中⼼,遵循“分离关注点”设计原则。这也是Angular的模型驱动思维与jQuery的DOM驱动思维的显著差异。所以我们在做Angular开发的时候应该谨记以下两点:

  • 绝不要先设计你的页⾯面,然后⽤用DOM操作去改变它
  • Directive不是封装jQuery代码的“天堂”

又例如细节之处,本书作者仿佛是拈着针尖在跳舞,刻绘着细节纤毫毕现;又佐以代码,论证有理有据;阅读时,真好像是你和雪狼、破狼在一起结对编程呢。例如书中在提及对服务访问对象(SAO)的封装时,给出了这样两段代码:

angular.module('app').controller('ReaderCreateCtrl', function ReaderCreateCtrl($resource) {
  var vm = this;
  var Reader = $resource('/api/readers/:id', {id: '@id'}); 
  vm.submit = function(form) {
    Reader.save(form);
  };});

封装后:

angular.module('app').controller('ReaderCreateCtrl', function ReaderCreateCtrl(Reader) {
  var vm = this;
  vm.submit = function(form) {
    Reader.save(form);
  };});

仅仅是寥寥几行代码的区别,却体现了作者对于代码可读性的执着追求。如此内容在书中俯拾皆是。作者对整洁代码的敏感度,就好像水银温度计对气温的感知一般,哪怕是一刻一毫都能准确感知,进而在展开的文字叙述中潜移默化地影响着读者;尤其针对初学者,作者从一开始就为他(她)们展示了什么是AngularJS之美,什么是代码之美,什么是设计之美,就好似建立了AngularJS世界的“潜规则”,入了这个圈,你需得如此如此这般这般,否则就得荆棘一路步履蹒跚。而那些优秀的工程实践例如测试驱动开发,面向模型编程,迭代的演化,一次只做一件事情的行为准则,则完全融化在文字的血液中,浓缩为简单朴实的词语,天然地点缀在整本书中,和风细雨,润物细无声。

我与本书的一位作者破狼相交甚深,虽然一直未有机会共同战斗在一个项目,却也有许多机会彼此沟通各自对设计的理解。在面向对象设计、领域驱动设计、架构设计等诸多方面,我们抱有相同的设计态度,可谓志同道合。问道技术,譬如饮酒论文,酒酣耳热时,得聆佳音,当浮一大白,人生乐趣大抵如此。虽然我对前端技术所知了了,但阅读此书,颇有许多论点刚好击中我的腑肺,那种如寻觅到知己一般的快乐,真可以说是阅读之余的额外收获了。我喜欢此书的朴实,他们没有去构架飘渺高深的理论,没有浮夸地吹嘘AngularJS是如何如何的优秀,在前端开发中所向披靡。技术人写文章,常常没有卖弄,只是踏实地表达对技术的一己之得,得到的却是字字铮铮的金石之音。

显然,这是一本工程师写给工程师阅读的书,我只可惜这本书的出版,来得有点晚了。

是为序。

原文发布于微信公众号 - 逸言(YiYan_OneWord)

原文发表时间:2016-03-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏deed博客

关于程序员的59条搞笑但却真实 无比的编程 语录

982
来自专栏腾讯大讲堂的专栏

知乎高赞答案!你看过/写过哪些有意思的代码?

1174
来自专栏量子位

没马达、不用电,这种真·自动机器人靠温度变化游泳

最近,加州理工和苏黎世联邦理工学院就联合打造了一款不用电、不需要马达的“自驱动”机器人。

523
来自专栏java工会

为什么说 C 语言比 Java 难?

“小伙子,我看你骨骼惊奇,是万中无一的编程奇才,维护世界和平就靠你了,我这有本秘籍《Java编程思想》,见与你有缘,就50块买给你了!”

232
来自专栏量化投资与机器学习

几种编程语言的优缺点

我的旋风式简介会讲C、C++、Lisp、Java、Perl 、Ruby (我就是喜欢) 和 Python,把 Python 加进来是因为 —— 好吧,你看了就知...

44611
来自专栏章鱼的慢慢技术路

美团点评2018校园春季招聘后台开发工程师笔试经验

1586
来自专栏mwangblog

冯·诺伊曼与冯·诺伊曼模型

903
来自专栏编程微刊

【程序员交友】祈澈姑娘:假装文艺与代码齐飞的前端妹子

1453
来自专栏章鱼的慢慢技术路

美团点评2018校园春季招聘后台开发工程师笔试经验

1194
来自专栏架构师小秘圈

程序员如何解决时间利用率不高这个大bug?

一直感觉自己时间不够用,因此学习过 GTD 和番茄时间管理法等,每种管理法都有自己的优缺点,也有自己不习惯的部分。经过一长段时间(接近两年)的实践与改良、结合番...

3498

扫描关注云+社区