JavaScript DOM编程艺术读后感(1)—— 平稳退化
最近,在读《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)—— 平稳退化的更多相关文章
- javascript DOM 编程艺术 札记2 平稳退化
定义 指的是即便浏览器不支持javascript,页面的基础展示功能也不会受到影响的做法. 不能平稳退化的实例 javascript:这种伪协议,它可以通过链接调用javascript函数.比如< ...
- 浅谈JavaScript DOM编程艺术读后感和一点总结
最近工作不是很忙就想想想JavaScript的内部组成和一些要点,就是从这本书开始的.对新手来说还好,简单易懂. 简单终结下我重书中学到的一些要点. 下面都是个人学习的要点提取: 1.给自己预留退路, ...
- javascript+dom编程艺术 读后感
利用上班空闲2,3天把这本书看完了,整体来说,这本书很不错.虽然我js有一定的基础了,jquery基础也会使用,但是我觉得对js应该有个循序渐进的理解,所以还是把js系统的学习一遍.我看技术类的书总数 ...
- 读书笔记:JavaScript DOM 编程艺术(第二版)
读完还是能学到很多的基础知识,这里记录下,方便回顾与及时查阅. 内容也有自己的一些补充. JavaScript DOM 编程艺术(第二版) 1.JavaScript简史 JavaScript由Nets ...
- JavaScript DOM编程艺术学习笔记(一)
嗯,经过了一周的时间,今天终于将<JavaScript DOM编程艺术(第2版)>这本书看完了,感觉受益匪浅,我和作者及出版社等等都不认识,无意为他们做广告,不过本书确实值得一看,也值得推 ...
- 《JavaScript DOM 编程艺术》 学习笔记
目录 <JavaScript DOM 编程艺术> 学习笔记 第一章 js简史 第二章 js语法 准备工作 语法 第三章 DOM DOM中的D DOM中的O DOM中的M 第四章 js图片库 ...
- JavaScript DOM 编程艺术
最近把JavaScript DOM 编程艺术这本书看完了,觉得这本书很好 深入浅出地展示了渐进增强.平稳退化.结构和样式分离等编程思想,我对书中重要的知识进行了梳理总结. 一.网页 二.JavaScr ...
- JavaScript DOM编程艺术(第2版)的简单总结
介绍 JavaScript DOM编程艺术(第2版)主要讲述了 JavaScript.DOM 和 HTML5 的基础知识,着重讲述了 DOM 编程,并通过几个实例演示了具有专业水准的网页开发. 下面介 ...
- JavaScript DOM 编程艺术·setInterval与setTimeout的动画实现解析
先贴上moveElement()函数的大纲,为了方便观看,删了部分代码,完整版粘到文章后面. function moveElement(elementID,final_x,final_y,interv ...
随机推荐
- 一键帮你复制多个文件到多个机器——PowerShell小脚本(内附PS远程执行命令问题解析)
作为一个后台程序猿,经常需要把一堆程序集(DLL)或者应用程序(EXE)复制到多个服务器上,实现程序的代码逻辑更新,用以测试新的功能或改动逻辑.这里给大家介绍一个自己实现的PowerShell脚本,方 ...
- 多个项目MyEclipse中启动出现OutOfMemoryError: PermGen space如何解决
在MyEclipse中启动程序运行,报错java.lang.OutOfMemoryError: PermGen space应该怎么办?这是eclipse 内存不够的原因. PermGen space的 ...
- python模块之argparse--参数解析
一.简介: argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块.argparse模块的作用是用于 解析命令行参数,例如python parseTe ...
- Owl Carousel幻灯片插件的使用
Owl Carousel 是一个强大.实用但小巧的 jQuery 幻灯片插件,它具有一下特点: 兼容所有浏览器 支持响应式 支持 CSS3 过度 支持触摸事件 支持 JSON 及自定义 JSON 格式 ...
- redhat 6.8 配置centos6的yum源
1. 检查是否安装yum包[root@node1 rpms]# rpm -qa|grep yum 2. 删除自带的yum包[root@node1 rpms]# rpm -qa|grep yum|xar ...
- AVAudioSession(2):定义一个 Audio Session
本文转自:AVAudioSession(2):定义一个 Audio Session | www.samirchen.com 本文内容主要来源于 Defining an Audio Session. A ...
- Redis客户端管理工具,状态监控工具
TreeNMS是一款Redis web客户端管理工具,采用JAVA开发,实现基于web方式对Redis数据库进行管理.监控.数据维护. 功能包括:数据库的状态监控,库表的展示,key,value的展示 ...
- jquery一次绑定多个元素事件
jquery一次绑定多个元素事件 $(".peoplenum,input[name$='otherAmount'],#aa,#bb").bind("change" ...
- [leetcode-557-Reverse Words in a String III]
Given a string, you need to reverse the order of characters in each word within a sentence whilestil ...
- 【LeetCode】160. Intersection of Two Linked Lists
题目: Write a program to find the node at which the intersection of two singly linked lists begins. Fo ...