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 ...
随机推荐
- Java入门以及Java中的常量与变量总结
JDK与JRE的区别: JDK给开发人员使用(包含开发工具),JRE给客户使用(运行java程序的核心类库),JDK包含JRE关键字的含义: JAVA语言赋予特殊含义,具有专门用途的单词,关键字的单词 ...
- Core ML 机器学习
在WWDC 2017开发者大会上,苹果宣布了一系列新的面向开发者的机器学习 API,包括面部识别的视觉 API.自然语言处理 API,这些 API 集成了苹果所谓的 Core ML 框架.Core M ...
- [转]如何使用BackTrack破解WIFI无线网络的WEP密钥
aireplay-ng - -a (bssid) -h ::::: -e (essid) (interface) 你可能已经知道如果你想要加锁自己的WIFI无线网络,你最好选择WPA加密方式,因为WE ...
- bootstrap-datetimepicker bootstrap-datepicker bootstrap-timepicker 时间插件
<!DOCTYPE html><head> <title>时间插件测试</title><style type="text/css&quo ...
- Scrapy中使用cookie免于验证登录和模拟登录
Scrapy中使用cookie免于验证登录和模拟登录 引言 python爬虫我认为最困难的问题一个是ip代理,另外一个就是模拟登录了,更操蛋的就是模拟登录了之后还有验证码,真的是不让人省心,不过既然有 ...
- 关于MATLAB处理大数据坐标文件2017529
今天我们离成功又近了一步,因为又失败了两次 第一次使用了所有特征,理由:前天的特征使用的是取单个特征测试超过85分的特征,结果出现过拟合现象. 本次使用所有特征是为了和昨天的结果作比较. 结果稍好:比 ...
- ASP.NET Core 源码学习之 Options[1]:Configure
配置的本质就是字符串的键值对,但是对于面向对象语言来说,能使用强类型的配置是何等的爽哉! 目录 ASP.NET Core 配置系统 强类型的 Options Configure 方法 源码解析 ASP ...
- WebService小记
这个问题找了好多地方都没有结果,自己暂且总结一下吧,也不算是解决问题的根本途径,但是也不失为一种办法.当时用了wsimport wsdl2java xfire 都没有解决,大牛能解决的话,欢迎留言. ...
- java自带uuid生成
java自带uuid生成UUID.randomUUID().toString()
- DH 密钥交换算法
1.引言 CSDN搞什么短信验证,7年的账号居然登陆不了,真心抓狂,WTF!!!! DH,全称为"Diffie-Hellman",这是一种确保共享KEY安全穿越不安全网络的方法,换 ...