最近,在读《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. 浏览器本地储存方式有哪些?cookie、localStorage、sessionStorage

    现阶段,浏览器提供的储存方式常用的有三种,cookie.localStorage.sessionStorage 1.cookie 概念:cookie 是浏览器中用于保存少量信息的一个对象 基本特征: ...

  2. MACOS关闭指定端口

    因为用IDEA写项目的时候,有的时候结束Jetty导致端口没有释放,所以会出现占用的情况. MacOS结束端口占用进程的命令,和Linux的一样.先执行如下命令: lsof -i:8080 会有类似下 ...

  3. 文件快速删除工具, 解决你的node_modules

    摘要: 还在为删除文件慢烦恼吗?强大工具dlf来帮助你.作为一名前端开发,最常见的就是node_modules,如果dependencies很多,osx系统删除还好,Windows用户就麻烦了.本文分 ...

  4. Hadoop和MapReduce初识

    我们生活在大数据时代!!!微博.微信.云存储等大数据的需求,Hadoop由此诞生. 以下面部分数据为例: 1)Facebook存储着约100亿张照片,约1PB存储容量: 2)纽约证券交易所每天产生1T ...

  5. PHP获取当前的毫秒值

    php本身没有提供返回毫秒数的函数,但提供了一个microtime()函数,借助此函数,可以很容易定义一个返回毫秒数的函数 1. 函数 mixed microtime ([ bool $get_as_ ...

  6. 如何在linux如何安装nginx服务器

    1.进入命令窗口: 2.进入nginx.org 网站 下载安装包nginx-1.8.0.tar.gz 3.进入下载的文件夹 4.加压下载的压缩包 tar  -zxvf nginx-1.8.0.tar. ...

  7. ecshop屏蔽wap功能

    用手机打开ecshop网店,就会被重定向到mobile文件夹,如果打开wap功能,就能看到wap版的网站.但现在智能手机横行,iphone.安卓可以跟电脑一样浏览和购物,这个wap功能就有点鸡肋.现在 ...

  8. (cljs/run-at (JSVM. :browser) "命名空间就这么简单")

    前言  一个cljs文件定义一个命名空间,通过命名空间可以有效组织代码,这是构建大型系统必备的基础设施.本篇我们就深入理解cljs中的命名空间吧! 好习惯从"头"开始 每个cljs ...

  9. 【Android Developers Training】 80. 管理网络使用

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

  10. JavaScript 语言基础

    js语言基础 一 基本知识 UniCode编码 区分大小写(HTML不区分/XHTML区分) Unicode转义序列 \uxxxx (\u加4位16进制表示) 注释 单行注释:// 多行注释:/* * ...