嗯,经过了一周的时间,今天终于将《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. idea系列新版注册模式

    http://idea.qinxi1992.cn/ 楼上被列入黑名单,用 http://114.215.133.70:41017/

  2. 黄聪:wordpress中PHP运行错最有效解决办法Fatal error: Out of memory (allocated 6029312)(转)

    近日在升级wordpress 3.2.1和若干插件的过程中,发现了一个wordpress的错误:Allowed memory size of XXX bytes exhausted Fatal err ...

  3. import了sun开头的类,虽然它在代码里压根就没派上用处!但是必须得引用!

    package action; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io. ...

  4. [Java Web – 3A] – Spring MVC开发注意事项

    1.使用Maven构建项目 2.SpringMVC 绝对路径的问题 首先要明确一点,在html中,资源文件也是有自己的URL,即href中是支持绝对路径.如下代码: <link href=&qu ...

  5. NeHe OpenGL教程 第二十九课:Blt函数

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  6. SteamVR Unity工具包(VRTK)之控制器交互

    可交互对象(VRTK_InteractableObject) 可交互对象脚本被添加到需要用(如控制器)来交互的任何游戏对象上.   可用脚本参数如下   Touch Interactions 触摸交互 ...

  7. bug_ _Popwindow被魅族手机自带虚拟键挡住完美解决

    ========  1 之前做了一个分享的功能,从底部弹出popwindow进行分享,但是由于部分手机自带虚拟键,如魅族X4,所以弹出的popwindow被虚拟键挡住, 在网上找了好多资料,一些资料说 ...

  8. 时间c#

    无论Time.timeScale 等于多说Update和LateUpdate都会去执行 Time.timeScale会影响FixedUpdate的速度.  Time.timeScale还会影响Time ...

  9. Spring MVC 中文乱码的解决

    对于POST方法提交的中文乱码 , 可在web.xml中添加如下代码 : <filter> <filter-name>encodingFilter</filter-nam ...

  10. windows下Gulp入门详细教程 &&gulp安装失败的原因(红色)

    以下教程亲自实践可行: 另外添加一个Gulp自动编译.压缩.更新.测试的教程链接:https://markpop.github.io/2014/09/17/Gulp%E5%85%A5%E9%97%A8 ...