JavaScript DOM编程艺术学习笔记(一)
嗯,经过了一周的时间,今天终于将《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编程艺术学习笔记(一)的更多相关文章
- JavaScript DOM编程艺术-学习笔记
发现基础不是很好,补习一下.37买了2本书(dom编程和高级程序设计). 以前读书总是自己勾勾画画,有点没意思.现在写下来,说不定会成为传世经典.哈哈...........随便扯扯淡. 第一天(201 ...
- 【干货】JavaScript DOM编程艺术学习笔记1-3
从7月29号到8月8号,断断续续地看完了这本书,做了部分实践联系.总体感觉本书真的只能算是个入门,学完之后看到库的那一章才感觉是个大坑,实践中大部分应该都是用的现成的库吧,所以还要重新学习一个库,但是 ...
- JavaScript DOM编程艺术学习笔记-第二章JavaScript语法
一.JavaScript示例 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- JavaScript DOM编程艺术学习笔记-第一章JavaScript简史
一,JavaScript的起源 JavaScript是Netscape与Sun公司合作开发,它是一种脚本语言,通常只能通过Web浏览器去完成一些操作.JavaScript为程序员提供了一些操控Web浏 ...
- 【干货】JavaScript DOM编程艺术学习笔记10-12【完】
十.用JavaScript实现动画效果 鼠标放到链接上,每次只显示图片的一小部分,加快加载速度. js: function prepareSlideshow(){ //对象检测 if(!documen ...
- 【干货】JavaScript DOM编程艺术学习笔记4-6
四.案例研究:JavaScript图片库 js: function showPic(whichpic){ //取得链接 var source=whichpic.getAttribute("h ...
- JavaScript DOM编程艺术-学习笔记(第八章、第九章)
第八章 1.小知识点: ①某些浏览器要根据DOCTYPE 来决定页面的呈现模式(标准模式 / 怪异模式--也称兼容模式): 兼容模式意味着浏览器要模仿老一辈的浏览器的怪异行为,来让老站点得到运行,并让 ...
- JavaScript DOM编程艺术-学习笔记(第七章)
第七章: 1.dom方法创建并且插入标签:(这种方法并没有改变文档的物理内容,而是在改变dom树) ①创建元素节点:createElement(); ②内部前插入:appendChild() ③创建文 ...
- JavaScript DOM编程艺术-学习笔记(总结一)
1.1)dom-core方法:(不专属于js,支持dom的任何一种程序设计语言都可以使用它,它们的用途,也不仅限于处理网页,也可以用来处理任何一种标记语言编写处理的文档) ①getElementBy ...
随机推荐
- erlang r19里面的mnesia_ext
r19据说支持了mnesia_ext,终于可以给那个恶心2gb limit的mnesia换存储引擎了 先下载r19源码,编译 ./otp_build all -a ~/dev/erlang/r19 . ...
- 【Linux】系统 之 RAID
本人从事DBA相关的工作,最近遇到了IO抖动伴随shread running抖动的情况,主机宕机重启后备库及下游解析binlog出现损坏的案例,向一些有经验的同事咨询学习,其中最大的嫌疑是:raid卡 ...
- (C/C++) Interview in English. - Memory Allocation/Deallocation.
Q: What is the difference between new/delete and malloc/free? A: Malloc/free do not know about const ...
- 如何修改tomcat的端口
<Connector port="8485" protocol="HTTP/1.1" connectionTimeout="20000" ...
- 简单数据访问类,生成简单SQL,自动转换成java对象
import java.util.HashMap; import java.util.List; import java.util.Map; import org.slf4j.Logger; impo ...
- Java Cookie和Session(转载)
一.cookie机制和session机制的区别 具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案. 同时我们也看到,由于才服务器端保持状态的 ...
- Yii2.0 数据库查询方法
User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的一条数据(举个例子): User:: ...
- 在VMware虚拟机中配置DOS汇编开发环境!!
操作系统:win7 32位 DOS环境:DosBox 下载:http://www.dosbox.com/ 选择当前适合自己版本,下载就可以了. 汇编编译器:MASM 5.0 下载:http://do ...
- 要件审判九步法及其基本价值 z
要件审判九步法及其基本价值 发布时间:2014-12-24 14:29:05 作者介绍 邹碧华,男,1967年出生于江西奉新,毕业于北京大学法学院,获法学博士学位.上海市高级人民法院副院长.2006年 ...
- Informix SDK對比
一.基本信息對比 表 1. Informix .NET Provider 和 IBM Data Server .NET Provider 的对比 特性 IBM Informix .NET Provid ...