嗯,经过了一周的时间,今天终于将《JavaScript DOM编程艺术(第2版)》这本书看完了,感觉受益匪浅,我和作者及出版社等等都不认识,无意为他们做广告,不过本书确实值得一看,也值得推荐给想了解HDOM的相关人员!首先非常感谢作者写出了这么好的一本书,谢谢!书中的内容比较多,我仅记下我认为对自己和他人有所帮助的一些内容!

嗯,首先还是让代码来说话吧!

下面是两段此书中反复强调且通用的经典代码段

1:相当的经典和实用,尤其是当需要为页面加载函数绑定多个函数的时候

/**
* [addLoadEvent 为页面的加载事件绑定执行的函数]
* @param {[function]} func [打算在页面加载完毕时执行的函数]
*/
function addLoadEvent(func)
{
var oldonload=window.onload;
if(typeof window.onload != 'function'){
window.onload=func;
}else{
window.onload=function(){
oldonload();
func();
}
}
}

2:也相当的经典和实用,特别对于插入新的标签元素的时候

/**
* [insertAfter 将一个新的标签元素插入到目标元素的后面]
* @param {[DOMElement]} newElement [要插入的新标签元素]
* @param {[DOMElement]} targetElement [要插入的目标元素]
*/
function insertAfter(newElement,targetElement)
{
var parent = targetElement.parentNode;
if(parent.lastChild == targetElement){
parent.appendChild(newElement);
}else{
parent.insertBefore(newElement,targetElement.nextSibling);
}
}

第二本书作者不断的强调的事情

1)对于在浏览器中的网页而言本质上是三位一体的共同体,结构层、表示层、行为层,结构层由超文本标记语言负责,比如:HTML;表现层由CSS负责;行为层由JavaScript和DOM负责,书写代码一定要尽量三层分离各负其责。

2)书写代码,注意的地方有许多,对于网页代码而言,本书作者着重强调渐进增强、平稳退化、三层分离、简明易读、抽象通用。三层分离、简明易读就不用多解释了,很容易理解。抽象的目的就是为了通用重用,通常是将不变的因子用可变的因子来代替,比如:方法中传递的参数,原来不用传递可能是硬编码写在方法体里面的,变为函数的参数后,这个函数就更加的灵活啦!

渐进增强:是非常重要的一个代码书写原则,意思是这样的,对于网页而言,我们书写代码的时候总是应该从最核心的部分,也就是从内容开始,换言之在网页的三层结构中结构层是最为重要的一层,CSS主要是用来加强网页的显示样式,JavaScript 和 DOM主要是用来实现用户也网页的交互。当然,我觉得做任何事情可能都是如此的,分清主次、把握全局、抓住重点对任何的事情都是相当重要的。

平稳退化:也是一个非常重要的代码书写原则,平稳退化的重点在于强调在坚持以渐进增强的原则书写代码的基础之上,能够保证我们的程序更加的健壮,有更好的兼容性,对于一些缺乏必要的CSS和DOM支持的访问者,我们的网站仍可以为其提供一些最为核心的内容,不至于网页完全失去了价值。在代码中的体现,主要是首先要判断浏览器对某些方法、属性等的支持能力,然后在决定程序的下一步走向!

3)看待网页要能图形化的看待,在我们的眼中,DOM是一棵树,是一棵倒挂的树,文档中的每一个元素都对应着树中的每一个节点,以这种观点来去书写代码就会容易许多的,对于文档中元素的查找、修改、删除、替换、添加等操作就非常的形象化啦!好像我们玩一个好玩的玩具一样,一切都非常的清晰明了,摆在眼前,CSS编程了彩笔,JavaScript变成了传感器,DOM是原料加工场。

4)分析问题和解决问题的关键,是化繁为简、分而治之、循序渐进的一步一步的来,先将解决问题的思路一步步的想好列出来,至少最主要的要非常的清晰明确,然后先实现一个简单的核心的功能,然后再慢慢的扩展它的能力,让他实现平稳退化,再然后抽象化使其可以重用通用。

5)思考问题除了思考它能不能的问题,还应该思考它应不应该的问题,比如:现在的CSS也有处理一些事件的功能在,不过最好这样的事情还是交给JavaScript DOM 来做!

JavaScript DOM编程艺术学习笔记(一)的更多相关文章

  1. JavaScript DOM编程艺术-学习笔记

    发现基础不是很好,补习一下.37买了2本书(dom编程和高级程序设计). 以前读书总是自己勾勾画画,有点没意思.现在写下来,说不定会成为传世经典.哈哈...........随便扯扯淡. 第一天(201 ...

  2. 【干货】JavaScript DOM编程艺术学习笔记1-3

    从7月29号到8月8号,断断续续地看完了这本书,做了部分实践联系.总体感觉本书真的只能算是个入门,学完之后看到库的那一章才感觉是个大坑,实践中大部分应该都是用的现成的库吧,所以还要重新学习一个库,但是 ...

  3. JavaScript DOM编程艺术学习笔记-第二章JavaScript语法

    一.JavaScript示例 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  4. JavaScript DOM编程艺术学习笔记-第一章JavaScript简史

    一,JavaScript的起源 JavaScript是Netscape与Sun公司合作开发,它是一种脚本语言,通常只能通过Web浏览器去完成一些操作.JavaScript为程序员提供了一些操控Web浏 ...

  5. 【干货】JavaScript DOM编程艺术学习笔记10-12【完】

    十.用JavaScript实现动画效果 鼠标放到链接上,每次只显示图片的一小部分,加快加载速度. js: function prepareSlideshow(){ //对象检测 if(!documen ...

  6. 【干货】JavaScript DOM编程艺术学习笔记4-6

    四.案例研究:JavaScript图片库 js: function showPic(whichpic){ //取得链接 var source=whichpic.getAttribute("h ...

  7. JavaScript DOM编程艺术-学习笔记(第八章、第九章)

    第八章 1.小知识点: ①某些浏览器要根据DOCTYPE 来决定页面的呈现模式(标准模式 / 怪异模式--也称兼容模式): 兼容模式意味着浏览器要模仿老一辈的浏览器的怪异行为,来让老站点得到运行,并让 ...

  8. JavaScript DOM编程艺术-学习笔记(第七章)

    第七章: 1.dom方法创建并且插入标签:(这种方法并没有改变文档的物理内容,而是在改变dom树) ①创建元素节点:createElement(); ②内部前插入:appendChild() ③创建文 ...

  9. JavaScript DOM编程艺术-学习笔记(总结一)

    1.1)dom-core方法:(不专属于js,支持dom的任何一种程序设计语言都可以使用它,它们的用途,也不仅限于处理网页,也可以用来处理任何一种标记语言编写处理的文档)  ①getElementBy ...

随机推荐

  1. rabbitmq例子

    安装 sudo apt-get install rabbitmq-server 开启后台管理 sudo rabbitmq-plugins enable rabbitmq_management;sudo ...

  2. 更改AD查询LDAP条目的1000限制

    解除LDAP导入时的AD条目查询限制 解除LDAP导入或读取AD用户数限制问题 更改AD查询LDAP条目的1000限制 来源:http://www.jiancool.com/article/55373 ...

  3. MySQL key/value存储方案(转)

    需求 250M entities, entities表共有2.5亿条记录,当然是分库的. 典型解决方案:RDBMS 问题:由于业务需要不定期更改表结构,但是在2.5亿记录的表上增删字段.修改索引需要锁 ...

  4. JMM & synchronized概述(转)

    根据Java语言规范中的说明,JVM系统中存在一个主内存(Main Memory),Java中所有的变量存储在主内存中,对于所有的线程是共享的(相当于黑板,其他人都可以看到的).每个线程都有自己的工作 ...

  5. Java利用MessageDigest提供的MD5算法加密字符串或文件

    MD5是常用的加密算法,也经常用于校验信息完整,如文件的完整性.用术语讲,MD5是一种消息摘要算法(Message Digest Algorithm).另外还有一种常用的消息摘要算法SHA1.如果想了 ...

  6. 用CRT connect MongoDB 使用Backspace无效

    这是个很蛋疼的小问题... 使用./mongo 10.1.235.62:27017 连接上后 打错了无法删除!? 这是在逗我,那就修改CRT个设置,点击选项,会话选项,仿真,把终端改成Linux就行了 ...

  7. MongoDB 3.0.6的主,从,仲裁节点搭建

    在MongoDB所在路径创建log和data目录mkdir logmkdir data 在data目录下 创建master.slaver.arbiter路径 mkdir master mkdir sl ...

  8. java学习日志(1):命令行and小程序

    1.dos命令行,常见的命令 dir:列出当前目录下的文件以及文件夹md:创建目录rd:删除目录(必须空)cd:进入指定目录cd.. :退回到上一级目录cd/:退回到根目录del:删除文件exit:退 ...

  9. HTTP 错误 500.19 - Internal Server Error

    ylbtech-Error-IIS: HTTP 错误 500.19 - Internal Server Error 1.A,错误代码返回顶部 错误摘要 HTTP 错误 500.19 - Interna ...

  10. ylbtech-dbs:ylbtech-3,BarCode(条码资源系统)

    ylbtech-dbs:ylbtech-3,BarCode(条码资源系统) -- =============================================-- 条码资源系统-- YU ...