《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 条评论
登录 后参与评论

相关文章

来自专栏牛客网

知识总结:安卓工程师养成计划计算机基础细分方向知识算法

楼主Android菜鸡一枚,今年校招侥幸拿到了还不错的offer。因为校招实在过于侥幸,面试上很少遇到复杂的问题,这里就不写面经了,初略谈一谈校招的一些准备吧。...

3236
来自专栏互联网开发者交流社区

JAVA学习之路:不走弯路,就是捷径

874
来自专栏hbbliyong

怎样去阅读源码,这篇文章值的你一读

作者:刘欣 公众号:码农翻身 链接:http://mp.weixin.qq.com/s/PDhEKM2XG_qzOmBjWb-M7Q "没有经验的技术...

2846
来自专栏java一日一条

重新使用Java的七个理由

O’Reily正在庆祝Java7的发布,以及7月25日到27日即将在波兰开展的 OSCON Java 大会。

541
来自专栏企鹅号快讯

程序猿必须知道的一些有用的网站

来自:开源中国 原文:https://github.com/sdmg15/Best-websites-a-programmer-should-visit 在学习...

20810
来自专栏无原型不设计

看了这三个问题,你就知道UX设计师如何起步

如何成为一个合格的UX设计师,怎样才能从菜鸟转变为设计高手,每天都有无数的设计师思考着同样的问题。凡事要做好,必须得回答这三个问题:做什么?怎么做?用什么做?...

2494
来自专栏CLEAN_CODER

一枚程序员眼中的单元测试

如今程序员群体赶上了中国最庞大的农民群体,大街上随便抓一把,十有八九是程序员,还一个刚从某国企离职报名参加软件培训班。我想码农的称号或许就是这么来的吧。

902
来自专栏Java学习网

关于计算机专业的人如何学好编程

  这篇文章是写给低年级的人的,已经工作的就不用来看我废话浪费时间了。   最近总是有人问如何确定自己方向的问题,说是看到有的人在搞手机,有的人在搞网页,有的人...

3276
来自专栏俞其荣的博客

记自己2018年三月份的面试经历烦烦烦烦面试的几家公司写在结尾

32512
来自专栏企鹅号快讯

一路走到java工程师,java都快出java9了,到底该如何学java?

期望本文能给一些在职想转行或许在校想学习Java的同学们一些小的启示。 如果我的文章能有幸被你看到,那么很大可能你和我一样,是半路出家的转行人员,不论有没有根底...

1807

扫码关注云+社区