- AngularJS深度剖析與最佳實踐
- 雪狼 破狼 彭洪偉
- 1301字
- 2019-01-01 01:21:27
序
這是一本具有強烈ThoughtWorks項目風格的書。書中打造的實戰項目完全遵循了ThoughtWorks工程實踐,一步一步從最初的框架通過快速迭代逐步豐富項目的骨肉,并在這個過程中抽絲剝繭地展現了AngularJS的諸多特性與技巧,如循循善誘的導師一步步指導著你從AngularJS的小工走向專家。
這里所謂的“專家”不僅僅是指你對AngularJS的諸多技巧盡皆了然于胸,能夠揮灑自如地運用于項目開發中—若能如此,不過是“唯手熟爾”的工匠罷了。真正的專家需要從大處著手,挖掘這門技術背后隱含的設計思想與哲學,換言之,需要知其所以然,卻又不偏廢細節,錙銖必較每個變量函數的命名格式,使代碼臻于完美,并從中提煉出能夠推而廣之的最佳實踐。
從知其所以然入手,書中的第3章“背后的原理”加強了內容的深度,使得本書不至于淪落為一本Example Step by Step。書中通過對MVVM模式的闡釋,解釋了Angular JS的設計原理與啟動流程,并給出了Angular JS開發的注意事項。書中寫道:
MVVM模式的要點是:以領域Model為中,遵循“分離關注點”設計原則。這也是Angular的模型驅動思維與jQuery的DOM驅動思維的顯著差異。所以我們在做Angular開發的時候應該謹記以下兩點:
? 絕不要先設計你的頁面,然后用DOM操作去改變它。
? 指令不是封裝jQuery代碼的“天堂”。
又例如細節之處,本書作者仿佛是踮著針尖在跳舞,刻繪的細節纖毫畢現;又佐以代碼,論證有理有據;閱讀時,真好像是你和雪狼、破狼在一起結對編程呢。例如書中在提及對服務訪問對象(SAO)的封裝時,給出了這樣兩段代碼:
angular.module('com.ngnice.app').controller('ReaderCreateCtrl', function Reader- CreateCtrl($resource) { var vm = this; var Reader = $resource('/api/readers/:id', {id: '@id'}); vm.submit = function(form) { Reader.save(form); }; });
封裝后:
angular.module('com.ngnice.app').controller('ReaderCreateCtrl', function Reader-CreateCtrl(Reader) { var vm = this; vm.submit = function(form) { Reader.save(form); }; });
寥寥幾行代碼的區別,卻體現了作者對于代碼可讀性的執著追求。如此內容在書中俯拾皆是。作者對整潔代碼的敏感度,就好像水銀溫度計對氣溫的感知一般,哪怕是一絲一毫都能準確感知,進而在展開的文字敘述中潛移默化地影響讀者。尤其針對初學者,作者從一開始就展示了什么是AngularJS之美,什么是代碼之美,什么是設計之美,就好似建立了AngularJS世界的“潛規則”,入了這個圈,你需如此這般,否則就得荊棘一路,步履蹣跚。而那些優秀的工程實踐,例如測試驅動開發、面向模型編程、迭代的演化、一次只做一件事情的行為準則,則完全融化成本書的血液,通過簡單樸實的詞語,天然地流淌在整本書中,和風細雨,潤物細無聲。
我與本書的作者之一破狼相交甚深,雖然一直未有機會共同戰斗在一個項目,卻也有許多機會彼此溝通各自對設計的理解。在面向對象設計、領域驅動設計、架構設計等諸多方面,我們抱有相同的設計態度,可謂志同道合。問道技術,猶如飲酒論文,酒酣耳熱時,得聆佳音,當浮一大白,人生樂趣大抵如此。雖然我對前端技術所知了了,但閱讀此書,許多論點剛好擊中我的腑肺,那種如尋覓到知己一般的快樂,真可以說是閱讀之余的額外收獲了。我喜歡此書的樸實,它沒有去構架飄渺高深的理論,沒有浮夸地吹噓AngularJS如何優秀,在前端開發中所向披靡。技術人寫文章,常常沒有賣弄,只是踏實地表達對技術的一己之得,讀者得到的卻是字字錚錚的金石之音。
顯然,這是一本工程師寫給工程師閱讀的書,我只可惜這本書的出版來得有點晚了。
是為序。
張逸
2015年8月7日夜 旅行中,在斯坦福大學安靜的校園
- 黑客攻防從入門到精通(實戰秘笈版)
- 數據結構(Java語言描述)
- Java Web及其框架技術
- Raspberry Pi for Secret Agents(Third Edition)
- Java面向對象程序開發及實戰
- Python應用輕松入門
- OpenStack Orchestration
- C語言程序設計
- Software-Defined Networking with OpenFlow(Second Edition)
- C語言程序設計與應用實驗指導書(第2版)
- Drupal 8 Development Cookbook(Second Edition)
- Python程序設計現代方法
- LiveCode Mobile Development Hotshot
- 軟件測試
- JavaScript Security