满满的都是干货
这几个月JS可以说是红遍了半边天,从传统意义上的纯前端语言蔓延到了后端开发领域,从单纯处理显示效果到现在可以处理一定的业务逻辑,前端和后端的界限显得越来越模糊。这其中更是以Node.js和Angular作为典型代表。两者虽然除了都用Javascript作为语言之外并没有什么交集,但却都是代表全民JS时代来临的见证。
这回参加试读活动的几本书中,很欣喜的看到Node.js和AngularJS都在其中。在试读了这两本的样章之后,不得不说现在的翻译的质量越来越高了。从最早的语句都不通顺、专有名词解释生涩到现在文笔流畅、逻辑通顺、理解毫无障碍,不得不感谢出版社编辑和译者付出的辛勤劳动。
从内容编排上来说,单从样章所显示的内容,我更加喜欢《用AngularJS开发下一代Web应用》。《了不起的Node.js》的样章中只介绍了Node.js的安装方式和一些基础的Javascript知识,令人读来非常意犹未尽。但是AngularJS的样章中基本略过了如何获取最新版本的AngularJS和如何用IDE进行开发这些骗稿费环节,上来就是一个Hello World的例子,如何将Hello一词通过变量赋值的方式显示。初看这个例子我并不觉得AngularJS有什么奇特的地方,但是作者随后的解释让我彻底改变了这种想法:1、这个赋值并不是通过定位DOM改变InnerHTML的方式实现的,也没有添加任何的监听器;2、JS对变量赋值的也仅仅是赋值而已,并没有写任何监听器和回调函数;3、Controller没有用到任何原生Javascript之外的方法,也没有构造函数。
我承认我当时瞬间被击倒了,我没有见过可以如此干净利落的将DOM和JS逻辑分离的如此彻底的赋值方式。在定义Javascript方法的时候完全不需要知道将来要改变哪个DOM的值,只是单纯完成赋值操作而已。在DOM中只是注册了一个ng-controller属性,就可以完成对greeting变量的调用。对于JS与DOM的传值交互,在不借助后台代码的情况下,我们通常能做的只有设置一个隐藏的div,由此作为媒介进行传值。这种方式在我看来非常丑陋,但是在更多情况下不得不采取这种方式。
接下来又看到了angular的MVC模型和数据绑定,然后跟着demo做了一个购物车页面。给我的感觉是,使用angularJS就像在使用JSTL或者ASPX的标签控件一样。但是很快发现angular和后两者有一个非常大的区别,那就是打开网页源代码可以发现,JSTL和ASPX页面的标签在最终都会在以HTML的方式在浏览器中显示,而angular则会保留用到的angular标签。也就是说,解析标签的工作不是像JSLT和ASPX那样在服务器端进行的,而是在浏览器端进行解析。用Angular写的HTML页面本身就是一个模板。由浏览器端通过解析JS完成页面的显示。
在我看来,这种方式可能会对SEO造成一定的影响,因为搜索爬虫并不会去执行JS(不知道google会不会给angular提供特殊支持)。但是在Web App当道的背景下,SEO的影响可以忽略不计。
最令我感动的是,这本书讲解的例子会非常详细的解释例子中新增的代码,只要是从头往下看的,基本不会出现突然出现一个新的知识点导致无法完成理解的情况。在讲解完代码之后,就是作者对于这个功能点的看法和一些反思,这些都凝聚了作者自己的干货不说,关键是非常好的把握到了读者看到这一页时的知识水平,虽然我此时写的angular代码不多,但是作者的罗列的问题基本都击中了我对功能理解上的死角,促使我去思考问题,尝试着用自己的理解去解释问题。
总而言之,这本书不论是在自身文章编排和指引读者思考上都做得十分到位,再加上译者流畅的文笔,使得这本书读来每翻一页都能填补自己知识理解上的空白。再加上不堆砌代码截图,使得我由衷的认为,这本书真尼玛满满的都是干货!