官术网_书友最值得收藏!

這是一本具有強烈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日夜 旅行中,在斯坦福大學安靜的校園

主站蜘蛛池模板: 体育| 扶风县| 泾阳县| 淮滨县| 石台县| 安溪县| 赣州市| 望奎县| 宁波市| 昌吉市| 普定县| 滁州市| 延津县| 阿坝县| 榆树市| 治多县| 尉犁县| 卢湾区| 浦城县| 玛沁县| 若尔盖县| 南靖县| 正镶白旗| 淮南市| 容城县| 香河县| 平湖市| 隆昌县| 德兴市| 兰西县| 运城市| 彩票| 靖远县| 增城市| 江山市| 夹江县| 丘北县| 龙口市| 广灵县| 正宁县| 会昌县|