最近,在读《JavaScript DOM编程艺术(第二版)》这本书,想着将自己的读后感记录下来,作为记忆吧。

  其实我并不是最近才刚开始读这本书的,我读了有一段时间了。我是一名web前端开发人员,喜欢前端,但是我不喜欢只知其然而不知其所以然的这个感觉,它让我感觉到恐惧。所以我决定充实一下自己的大脑。现在的人一说学习,都跑去网上看视频,跟着视频敲代码,说实话,这是一种快速入门的方法,能让我们快速的掌握这些开发技巧。但是也只有这点作用了,这就像工厂里面的工作一样,假如你是让别人告诉你第一步做什么,第二步做什么,第三步做什么而不去想为什么这么做,那么你也只能是最底层的一名工作人员而已,机械的重复这个工作,这也就是人们常说的码农。

  我是个较真的人,我每次碰到问题的时候,我的第一个想法就是为什么。为什么会出现这个问题,它是由什么原因产生的,该怎么解决呢?我特别讨厌那种说法,别管其他的,能解决就行了。我认为这是一种不负责任的说法,但是公司就需要这种做法,公司追求的是效率,我也只能随遇而安了,但是在下面我还是会找原因然后才是解决这个问题。随着对前端的深入了解,越来越发现自己的基础知识的不足,所以又重新拿起了书本,开始了枯燥的学习生活。

  读了这本书,我对平稳退化的印象比较深。联系了之前的那些做法,仔细想想确实是这个样子的。

  什么是平稳退化呢?其实也没有一个准确的定义,我来说说我的理解吧。通俗一点就是让自己的网页可以在所有浏览器上正常显示。其实这个听起来很容易,但是做起来却一点也不容易。

  首先,大家注意了没有我们写前端页面的时候css要放在head里面,然后是body里面的文档结构,最后才是js代码。但是在实际的工作当中我发现好多同事都不是这么做的,他们写的都比较随意,例如:js和css都写在head里面,这是他们的一种习惯。但是,假如你的js里面有问题,就会影响页面的正常加载。有些地方甚至会出现乱码,影响网页的用户体验。这就很严重了,但是有人肯定又要说我写的代码都测试过了,js是不会报错的。这个可不敢打包票,因为浏览器的兼容性在那放着呢。举个简单的例子document.getElementsByClassName(),这是一个很简单的DOM方法,大家用的也都很普遍,但是IE8不支持这个方法。当然我举的是个很简单的例子,也容易解决,我想表达的就是在不同的浏览器的版本中这种情况特别容易出现。书上提供了一种方法:

function displayAbbreviations() {

	if (!document.getElementsByTagName) return false;
if (!document.createElement) return false;
if (!document.createTextNode) return false;
//取得缩略词
var abbreviations = document.getElementsByTagName("abbr");
//判断是否存在这个元素,没有的话退出来
if (abbreviations.length < 1) return false;
var defs = new Array();
//遍历缩略词
for (var i = 0; i < abbreviations.length; i++) {
var current_abbr = abbreviations[i];
if (current_abbr.length < 1) return false;
var definition = current_abbr.getAttribute("title");
var key = abbreviations[i].lastChild.nodeValue;
defs[key] = definition;
}
//创建自定义列表
var dlist = document.createElement("dt");
for (key in defs) {
var definition = defs[key];
//创建定义标题
var dtitle = document.createElement("dl");
var dtitle_text = document.createTextNode(key);
dtitle.appendChild(dtitle_text);
var ddesc = document.createElement("dd");
var ddesc_text = document.createTextNode(definition);
ddesc.appendChild(ddesc_text);
//把他们添加到定义列表
dlist.appendChild(dtitle);
dlist.appendChild(ddesc);
}
//创建标题
var header = document.createElement("h2");
var header_text = document.createTextNode("Abbreviations");
header.appendChild(header_text);
//将标题添加到页面主体
document.body.appendChild(header);
//把定义列表添加到页面主体
document.body.appendChild(dlist);
}

大家可以看下我上面的代码,很容易就可以发现一个问题,就是我的这个方法的最前面有几个判断,这几个判断就是为了预防这一种情况出现的,虽然代码量增加了,但是更加保险了,最多就是页面中的某个功能会缺失,但是整体页面都能正常显示,js都能正常加载。这种做法使得代码量增加的,但是好处是显而易见的。我认为写代码也是一种习惯,我们应该从现在就开始养成一个良好的编码习惯,这会让我们离成功更进一步的。

JavaScript DOM编程艺术读后感(1)—— 平稳退化的更多相关文章

  1. javascript DOM 编程艺术 札记2 平稳退化

    定义 指的是即便浏览器不支持javascript,页面的基础展示功能也不会受到影响的做法. 不能平稳退化的实例 javascript:这种伪协议,它可以通过链接调用javascript函数.比如< ...

  2. 浅谈JavaScript DOM编程艺术读后感和一点总结

    最近工作不是很忙就想想想JavaScript的内部组成和一些要点,就是从这本书开始的.对新手来说还好,简单易懂. 简单终结下我重书中学到的一些要点. 下面都是个人学习的要点提取: 1.给自己预留退路, ...

  3. javascript+dom编程艺术 读后感

    利用上班空闲2,3天把这本书看完了,整体来说,这本书很不错.虽然我js有一定的基础了,jquery基础也会使用,但是我觉得对js应该有个循序渐进的理解,所以还是把js系统的学习一遍.我看技术类的书总数 ...

  4. 读书笔记:JavaScript DOM 编程艺术(第二版)

    读完还是能学到很多的基础知识,这里记录下,方便回顾与及时查阅. 内容也有自己的一些补充. JavaScript DOM 编程艺术(第二版) 1.JavaScript简史 JavaScript由Nets ...

  5. JavaScript DOM编程艺术学习笔记(一)

    嗯,经过了一周的时间,今天终于将<JavaScript DOM编程艺术(第2版)>这本书看完了,感觉受益匪浅,我和作者及出版社等等都不认识,无意为他们做广告,不过本书确实值得一看,也值得推 ...

  6. 《JavaScript DOM 编程艺术》 学习笔记

    目录 <JavaScript DOM 编程艺术> 学习笔记 第一章 js简史 第二章 js语法 准备工作 语法 第三章 DOM DOM中的D DOM中的O DOM中的M 第四章 js图片库 ...

  7. JavaScript DOM 编程艺术

    最近把JavaScript DOM 编程艺术这本书看完了,觉得这本书很好 深入浅出地展示了渐进增强.平稳退化.结构和样式分离等编程思想,我对书中重要的知识进行了梳理总结. 一.网页 二.JavaScr ...

  8. JavaScript DOM编程艺术(第2版)的简单总结

    介绍 JavaScript DOM编程艺术(第2版)主要讲述了 JavaScript.DOM 和 HTML5 的基础知识,着重讲述了 DOM 编程,并通过几个实例演示了具有专业水准的网页开发. 下面介 ...

  9. JavaScript DOM 编程艺术·setInterval与setTimeout的动画实现解析

    先贴上moveElement()函数的大纲,为了方便观看,删了部分代码,完整版粘到文章后面. function moveElement(elementID,final_x,final_y,interv ...

随机推荐

  1. Python爬虫-爬小说

    用途 用来爬小说网站的小说默认是这本御天邪神,虽然我并没有看小说,但是丝毫不妨碍我用爬虫来爬小说啊. 如果下载不到txt,那不如自己把txt爬下来好了. 功能 将小说取回,去除HTML标签 记录已爬过 ...

  2. SQL常用命令

    SQL常用命令使用方法: (1) 数据记录筛选: sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]" sql=&qu ...

  3. springmvc 之 返回值

    springMVC对于controller处理方法返回值的可选类型 spring mvc 支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, Stri ...

  4. [0] C#实现WebBrowser&HTML交互

    using System;using System.ComponentModel;using System.Windows.Forms; namespace WindowsApplication5{ ...

  5. [编织消息框架][netty源码分析]8 Channel 实现类NioSocketChannel职责与实现

    Unsafe是托委访问socket,那么Channel是直接提供给开发者使用的 Channel 主要有两个实现 NioServerSocketChannel同NioSocketChannel 致于其它 ...

  6. PHP中递归最详解释.

    说到递归函数想必会有很多同学感到晕晕的,很难绕,容易绕错,那下面就让我来为大家详解一下. 首先,什么是递归函数呢? 1.所谓递归:指的是在函数内部,调用函数自身的操作.2.递归分两布:递(从最外层函数 ...

  7. 《javascript高级程序设计》笔记三

    第三章 基本概念 任何语言的核心必然会描述这门语言最基本的工作原理.这部分内容对我们来说,读起来很乏味,甚至会产生困意,但这部分内容却是重要的!我有幸拜读<JavaScript高级程序设计> ...

  8. Swift字符串插值

    字符串插值是一种全新的构建字符串的方式,可以在其中包含常量.变量.字面量和表达式.您插入的字符串字面量的每一项都被包裹在以反斜线为前缀的圆括号中: let multiplier = let messa ...

  9. 带你重拾JavaScript(2)之console的你所不知道的功能

    JavaScript最常用的调试工具就是console.info()了.console是浏览器中window对象的属性之一,由浏览器对象模型(BOM)提供,作用是访问浏览器控制台,你可以通过conso ...

  10. 【Android Developers Training】 104. 接受地点更新

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...