《ppk 谈 javascript》读书笔记
2:48 下午 10/30/2008
小结:
两个礼拜没看了,可见坚持一件事是多么的不容易。看的是“第5章:核心”,主要介绍的一些javascript的语言特性,我觉得相对于书中介绍的知识,更重要的是作者学以致用的学习态度和方法:在开篇已经说明可以先不细看这章,在实际的的项目说明中遇到语言特性不明再回来查看相关章节。而且在语言的特性介绍上,也不是罗列,而是尽量说明在他的项目中用到的特性的用法和作用。其实应该说是致用以学,围绕自己的目标集中需要的资源。作者还有句话说得深得我心:他也总是不能很好的应用正则,呵呵。
心得:
(1)在switch的case中,类型检测不像javascript里别的地方那么松散。
case '4' 和 case 4是不同的。
(2)自我编码规则定义,javascript中用单引号'', html中用双引号"",虽然这两种标准都同时支持两种引号,这种自我规则的定义能很好的保持自己代码的一致性。
(3)几个有用的函数而我原来用的很少的函数
(3.1)toLowerCase()和toUpperCase():在某些情况下,将两个字符串都转为大写或小写能够更准确的比较。
(3.2)indexOf, lastIndexOf和charAt(): 这个返回第2个a的做法比较有趣
Code
(4)一个虽然我知道,但还是想再次提醒自己的特性:在javascript中,隐式声明的变量是全局的,一定要尽量避免这种情况,而且如果知道一个变量的类型,最好在声明它的时候赋一个对应类型的初值,减少混乱,如:
var stringA= "";
var numberB= 0;
(5)强制类型转换。
Code-JS
事实证明还是相当有用的,尤其是动态生成HTML元素,并为其动态的设置标示时。
没有强制转换js
结果是:
Code-HTML
修改为:
Code
-----------------------------------------------------------------------------------
2:33 下午 10/16/2008
心得:
作为“第四章:准备”的核心目标,ppk在全章中都讨论的是关于决策,在这张的最后部分,回归了软件工程的通用原则:根据需求,制定决策;先考虑高阶决策,在考虑细节决策。对于书所列举的8个商业项目,作者用"需求","html决策","脚本决策"三个标题简明的分析"做什么","怎么做","为什么这么做",非常简明。对,依然是简明,一个很值得学习的设计原则就是“简明”。
技巧:
1.加入脚本到页面的一个技巧,可以避免当页面上图片过多的脚本加入延迟。
Code
就是在紧挨</body>的上一行加入脚本呢,这样可以避免下载图片,视频等大体积的数据时,脚本已优先加入,并执行。
-----------------------------------------------------------------------------------
2:45 下午 10/15/2008
心得:
ppk讨论了在准备页面的工程中应该做得工作。在他看来,html, css决定之后依次是:设置事件处理程序,确定客户状态,设置访问,产生内容,定义关系和修改文档结构。在我看来,就是决定javascript,其中事件处理程序,生成动态内容(元素),产生关系和修改文档结构就是js脚本在准备阶段最重的工作,一句话说明的话就是设置html元素的初始状态。其他的应该是和具体项目关联的操作操作逻辑。
技巧:
1.定义元素间的关系(relatedElement)
代码示例:
js-1
js-2
通过在初始化阶段设置elem1和elem2的关系,在以后的的操作中,可以通过elem1简明的定位到elme2并实施控制。这样避免了使用再次使用getElementbyId等钩子再次寻找对应元素,也能更好的反应应用的逻辑。不过,个人小疑问,为什么这个不是个数组relatedElments,这样可以设置更多的关联元素,因为现实中需要一个元素就是很可能跟很多元素关联的,可能应为这样从某些方面也增加了耦合性吧,要控制更多的元素,还是来个统一的触发器来的更合理一些。
-----------------------------------------------------------------------------------
3:32 下午 10/14/2008(今天在这个上面花的时间有点过了,差不多2个小时,本来应该是半个小时的)
心得:
同理所有的软件项目,在web项目开始之前做一定的规划是很必要的,关于如何规划html, css之间的关系,并没有特别通用的准则。ppk提了一个主观的标准:简明。并分别举例对之进行说明。在两个例子中的共同点,都是定义简明的原则,不仅是逻辑上的简明,而且包括实现上的简明。我觉得这是脚本程序应有的本色,虽然javascript已经在大型项目中得到了很大的应用,但我依然觉得应该只在必要的时候应用高级技巧。
技巧:
1.最好将css分离出来。
在上次我写的代码中,使用javascript动态生成网页元素,我使用javscript生成所有的css属性,确实是一段比较痛苦的历程。确实,应该统一使用javascript还置换css属性来实现某些效果。
比如,显示/隐藏一个<div id="test_div">,
document.getElementById("test_div").style.display="" / "none";
虽然可以工作的很好,但是如果我要同时置换背景色,大小等,同样的style设置代码就会堆砌起来,而且还需要知道在不同的浏览器中,style的属性在javascript中的而命名方式,可是如果事先定义好css属性,直接置换className指向即可,
document.getElementById("test_div").className="showDiv" / "hideDiv";
2.在html的标签中可以自定义属性。
例如:
html:
<textarea id="input_area"maxlength="300">
js:
maxLength= document.getElementById("input_area").getAttribute("maxlength");
其中maxlength就不是xhtml或html标准中定义的。但是通过javascript可以通过getAttribute()方法很容易的获取这个参数的址,从而简明的进行的对应的处理。
-------------------------------------------------------------------------------------
2:33 下午 10/13/2008
心得:
在"第三章:浏览器"中,ppk重点讨论了浏览器的兼容性的一些的问题和处理方法。有些问题已经解决了,比如用来举例的mozilla的一个bug。而且关于调试的部分,在有firebug后,也没有太大的意义。但是ppk在面对问题的认真态度,和解决问题的思路是更宝贵的财富,有几点是很值得学习的,比如:在他的8年(到2006年)的工作生涯中,他将他工作中遇到的问题和自己想到的解决方法,列表在网站上,好处主要有二:(1)加深对问题的理解;(2)为其他人提供帮助;(3)在积累中成为专家。
技巧:
1.检查浏览器兼容技巧:不要进行浏览器检查(是否是ie, firefox等等),而要进行具体的语句对象检查(是否支持getElementById, getElementsByTag等),因为浏览器的版本太多,而且各个的实现一直在变化,是不可靠的。
--------------------------------------------------------------------------------------
2:45 下午 10/10/2008
心得:
ppk在"第二章:大背景"中重点讨论由于历史原因造成的web应用的可用性问题。其中有无脚本支持的页面的兼容性问题讨论较多。虽然作者想了很多巧妙地办法来保证页面在不同限制条件下的可用性。但我,最认可的做法还是作者提出的两套程序的办法,一套有脚本的,一套没有脚本的,两套程序的做法可以有效在有需求的情况下很好的保证开发的分工和后期的维护性问题。另外:就目前而言,javascript在浏览器中的支持已经比两年前更加广泛,没有必要的话,只开发一套脚本支持的即可。
技巧
1.在两套程序同时工作的时候,应该通过window.replace而非window.href在页面访问之初切换版本,因为replace是覆盖掉"后退"键的访问记录,而href会增加"后退"键的访问记录。这样,当点击后退键的时候,不会回退到无脚本的程序,而退回到用户期待的后退页面。

浙公网安备 33010602011771号