2007年1月6日星期六

我看《javascript dom编程艺术(dom scripting)》


这本书在刚出版的时候,编辑就送了一本给我,可惜那段时间出差在外没能看到,真正到手是4号那天,之前一直关注china-pub上的评论,有网友评价说内容太肤浅,“大失所望,感觉象是喝了碗稀粥,一点实在货都没有”。的确,此书是我有史以来读得最快的一本,三百页,从4号晚上开始看,到第二天下午就看完了,说明写的真的是很简单-_$
不过话又说回来,就我的阅读体验来说,还是有收获的,为什么这么说呢?也许就因为我是个初学者吧,web前台的初学者,书里面提到的三层分离思想:结构(XHTML)、表示(CSS)、行为(javascript、dom)的解耦,还是非常有意义的,阐述得也还清晰,示例简单,比较容易理解。有一个地方给我的映象比较深刻,就是在讲“当前页面标示”的时候提到的方法:作者用document.location.href来提取当前页面地址,再对比导航条中相应的超链接地址,然后设置其css以达到突出显示的目的,非常新颖。在这之前,我都是按照《精通CSS(CSS Mastery)》里面的硬编码方式来做的,呵呵,没想到可以如此灵活,要知道他这段代码是可以重用的……另外,作者一贯用循序渐进的方式,进行实例讲解,一步一步的完善各个函数,也就是重构,这一点也是值得我们借鉴的。还有就是最后提到的hijax,提倡先按旧式、常规的方法开发系统页面,最后再用javascript和XMLHttpRequest来拦截和传送数据,以加入AJAX功能,这与之前看过的《AJAX实战(AJAX In Action)》中阐述的“忘掉Web的页面概念,打破以前的经验”似乎背道而驰?这个问题有待于看了作者的新书《Bulletproof AJAX》再下结论,这本书就是讲解hijax的,也是人邮的图灵公司引进出版,比较期待。说到Bulletproof,又想起了之前翻完的《无懈可击的Web设计(Bulletproof Web Design)》,也是很有意思的一本书,改天抽时间也来以自己的眼光评一评^_^
上面讲的都是优点,那本书的缺点呢?不是没有,而是太明显了:重复、罗嗦是最大的特点。作者把读者都当成从来没接触过javascript和dom知识的门外汉,讲解一个循环或者一个条件判断语句都能花上几页篇幅,而且在书中其他地方遇到一样的语法,也如法炮制,不厌其烦。很多时候为了几个结束函数用的右括号“}”,也能把前面已经列过的代码清单再复制粘贴一遍,完全是在骗书稿。正如china-pub上的Renart兄所说,“这么一丁点东西难得作者竟然能写出三百多页的篇幅来”,晕。至于有人评论说作者认为“只能通过DOM获取inline的style”,这一点有失偏颇了,其实作者一直强调的是,用style属性只能取得inline的样式信息,至于如何通过DOM的其他手段去获取外部文件的样式,压根就没讲,呵呵。
总结一下,本书用来入门还是可以的,不过对dom的讲解也太浅了点,基本的操作之前很多书上都有了,比如《AJAX基础教程》就提到不少,够用了,要想深入学习这方面的知识,可以看看《javascript高级程序设计》,里面讲了不少,然后我最最期待和推荐的《ppk on javscript》一书里面也详细介绍了这部分内容,而且是基于“分离、解耦”的思想来阐述的,非常棒,这本书等看完了电子版再上来好好详细为大家评述吧。言归正传,对于想快速入门javascript dom的朋友,还是推荐翻翻此书,毕竟作者传播的三层思想还是很有道理的,阐述的也比较细(至于细得是不是让你觉得烦,我就不知道了,呵呵),就我个人来说,一本书,只要有个闪光点,能让我有收获,就是值得的,我认为,本书也算得上“值得”。

目前发现的小问题(勘误):
1、81页第12行"如果你不理解getElementById和getElenmentsByTagName,你就不能参与这项游乐活动",应该是"或",而不是"和";
2、117页第二行开头,"变量para"应该是"变量testdiv"。

-------------------------------------------
补充:有朋友对我上面说的那个例子感兴趣,之前讲的不是很清楚,本来是想把代码贴出来的,可是这个blog需要自己写转义字符,而且格式也不能保持,唉,看来google还需要完善呐。下面是我写的一个简单的例子,大家可以看看:实例下载

4 条评论:

匿名 说...

示例简单,比较容易理解。有一个地方给我的映象比较深刻,就是在讲“当前页面标示”的时候提到的方法:作者用document.location.href来提取当前页面地址,再对比导航条中相应的超链接地址,然后设置其css以达到突出显示的目的,非常新颖.
这个例子我没见过,不过觉得挺有用的。小狗说的3层我不是很会,看来得抽时间好好补补这些知识了,不然落后了。
小狗加油捏!

琳琳的小狗 说...

to san:
我更新了下原文,你可以下载例子代码看看,随便写的,目的在于演示,怎么改进大家应该知道了吧,呵呵

Unknown 说...

consulta medico pediatra medico doctor dermatologo veterinario veterinario psychologist consulta abogado abogado colombia abogado mexico abogado españa abogado psicologo doctor psicologo abogado abogado psiquiatra

trustno1 说...

html css网页设计实例来学习
html示例代码段标记左右浮动