JavaScript DOM 编程艺术(第二版)
1、JavaScript历史
¥%……&**&%*&…… 百度吧。
2、JavaScript 语法
2.1 准备工作
一个文本编辑器、一个浏览器。
可能再加一个翻译器。
2.2 语法
- 每句末尾给个分号。
- 善用注释。
- 先声明变量再赋值是个好习惯(虽然 js 并不需要),同时 js 名字区分大小写。
- 命名不能以数字开头,首选驼峰式写法。
- js 是弱类型语言,也就代表可以在任意时刻更改变量的类型。(ts 为强类型补充)
类型分别有:(只写书上有的哈~)
- 字符串: 由引号包裹住任意字符构成。
- 数值: 任意数字。
- 布尔值: true | false。
- 数组: 变量或值的集合,同时也可以套娃。
- 对象: 键值对,每个属性对应不同值。
2.3 操作
算术操作符有:+、-、*、/、++、--、+=、% 等...
同时,算数操作符还能把两个值联合在一起,但很容易改变类型,慎重。
2.4 条件语句
一般当我们想要给脚本设限制时,会用到 if 语句。
一些比较操作符:>、<、>=、<=、===、!== 等...
由于弱类型语言的弊端,所以建议使用全等(===)和全非(!==)来判断更为稳妥。
一些逻辑操作符: &&、||、!() 等...
2.5 循环语句
重复循环语句可用: while、do...while、for 等...
2.6 函数
当一些脚本被重复需要的时候,可以把它们封装成一个函数。
函数最大的威力在于能接收参数,在内部做各样事情。
同时函数还能返回相应类型值给与变量赋值。
作者用下划线命名变量,用驼峰命名方法,方便一眼分辨谁是谁。
变量作用域:
- 全局变量:可以在脚本任意位置访问与引用。
- 局部变量:只存在于他声明的函数内部,外部无法访问。
2.7 对象
对象是非常重要的类型,是自包含的数据集合,它的数据可以通过两种形式访问 —— 属性和方法。
- 属性是隶属于某个特定对象的变量。
- 方法是只有某个特定对象才能调用的函数。
对象有分内建对象(像 new Date() 里面的方法),宿主对象(像 Element、document 之类)
3 DOM
3.1 DOM 中的 “ D ”
document(文档)。
3.2 DOM 中的 “ O ”
object(对象)。
3.3 DOM 中的 “ M ”
Model(模型),也可以说是 Map(地图),是某种事物的表达形式。
DOM 把一份文档表示成为一棵树(数学意义上的概念),家谱树。其中以 parent(父)、child(子)、sibling(兄)
简例:
父:html
子:head、body(又互为兄弟)
当这棵家谱树越来越大,越来越复杂的时候,这个文档称为节点数会更贴切一点。
3.4 节点
分三种:元素节点、文本节点和属性节点。
- 元素节点:标签。
- 文本节点:标签里面包含的文本。
- 属性节点:标签自带有的属性。
获取元素:
- getElementById
- getElementByTagName
- getElementByClassName
3.5 获取和设置属性
- 获取: getAttribute。
- 设置: setAttribute。
4 JavaScript 图片库(案例)
%¥#%¥……&*()……¥&……自己写吧
5 最佳实践
在构建网站的时候,要考虑对方浏览器将 javascript 禁用的情况。从而在构建网站代码的时候,要考虑每一步的平稳过度。
比如一个网站的构造由 html 和 css 还有 javascript 三样组成,如果 javascript 被禁掉,网站起码还能看,再进一步就连 css 也没了,也还能大概看得出 html 的结构。
同时由于市面上的浏览器多种多样,加上版本不一,最好在你的代码上能做好兼容。
而出于对性能的考虑呢,可以有以下几点
- 脚本尽可能的不要去访问和标记 DOM。
- 尽可能的把脚本合并,减少请求。
- 浏览器每次从同一个域名最多只能同时下载两个文件,期间不会下载其他任何东西,为了减少阻塞,尽量把脚本放到 body标签底部
- 压缩脚本
6 图片库实例改进
%¥#%¥……&*()……¥&……自己写吧
这里作者提到了机构化程序设计的其中一条原则是 —— 函数应该只有一个入口和一个出口。
作者表示,如果一个函数不符合条件的情况下产生多个出口,只要这些出口都在函数的开头部分,那么是可以接受的。
7 动态创建标记
- document.write
- innerHTML
- appendChild
- createTextNode
- insertBefore
- insertAfter
Ajax
异步加载页面内容,更新不必再整个页面响应,同时搜索引擎的蜘蛛程序不会抓取到有关内容。
8 充实文档的内容
调整一下思路,从我们一开始考虑的情况来说,在一切坏情况来确保我们的网站实现是在渐进增强。
假设我们网站最重要的内容,就应该在最坏的情况下,它也能让用户有所体验(即使那体验很差),也不应该完全没有体验。
简单来说,这一章就是介绍如何用 dom 操作来为文档补充内容
9 CSS DOM
网页一般由三部分组成
- 结构层: HTML
- 表示层: CSS
- 行为层: JavaScript
简单来说,这一章就是介绍如何用 dom 为文档添加样式。
10 用 JavaScript 实现动画效果
简单来说,这一章就是介绍如何通过 dom 操作元素的位置,来实现简单的动画效果。
11 HTML5
HTML5 正在慢慢地将三部分融合,例如 canvas、video 等等。 作者推荐了一个开源库 Modernizr 作为特性检测。
12 综合示例
%……&]*()¥&*……*()*自己写!!%¥……&*()
附录JavaScript 库
选择 javascript 库是可以让自己把更多的精力放到业务逻辑上。不过库多种多样,在选择时我们要先考虑以下几个问题。
- 它具备你需要的所有功能吗?如果没有,那多个库中会有重复的功能吗?
- 它是不是有很多你用不上的功能呢?
- 它是模块化吗?你可以只加载你所需要的功能模块吗?
- 它的支持情况如何?用的人多吗?社区活跃吗?
- 它有文档吗?
- 它的许可合适吗?
(完结撒花✿✿ヽ(°▽°)ノ✿)