增强js代码提示_读书笔记《DOM编程艺术》平稳退化、渐进增强、向后兼容

本文介绍了JavaScript代码的最佳实践,包括平稳退化,确保无JS时网页正常工作;分离JS,将网页结构与脚本行为分开;渐进增强,用额外信息层包裹原始数据;向后兼容,通过对象检测解决老版本浏览器问题;性能优化,如少访问DOM、合并脚本、压缩脚本等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是本书第五章:最佳实践

如果js代码不符合语法规定,JS解释器(对Web应用而言就是浏览器)将拒绝执行它们并报错;而浏览器在遇到不符合语法规定的HTML代码时,则会千方百计地将其呈现出来。

平稳退化:确保网页在没有JS的情况下也能正常工作。

如果正确地使用了JS脚本,就可以让访问者在他们的浏览器不支持JS的情况下仍能顺利地浏览你的网站。这就是平稳退化,就是说,虽然某些功能无法使用,但最基本的操作仍能顺利完成。

JS使用window对象的open( )方法来创建新的浏览器窗口。

window.open( url, name, features )

url: 想在新窗口里打开的网页的URL地址,如果省略,则会弹出一个空白的浏览器窗口。

name: 新窗口的名字。可以在代码里通过这个名字与新窗口进行通信。

features: 逗号分隔的字符串。新窗口的各个属性(尺寸、启用或禁用的各种浏览功能,工具条、菜单条、初始显示位置等) 原则:少而精

open( )方法是BOM的一个好案例,它的功能对文档的内容也无任何影响(DOM才可以影响)。这个方法只与浏览器环境有关。(这个例子就是window对象)

“javascript:” 伪协议

“真”协议用来在因特网上的计算机之间传输数据包,如HTTP协议、FTP协议等。

伪协议是一种非标准化的协议,“javascript:” 伪协议让我们通过一个链接来调用JS函数

646407263988bcf46237f7c637c46efd.png

支持“javascript:” 伪协议的浏览器运行正常,

较老的浏览器会去尝试打开那个链接失败,

支持这种伪协议,但是禁用了JS功能的浏览器会什么也不做。

88263014ac9a576c8e686074baa2c5ae.png

48ff985a3bee6eb8c96d865d8e42bdd9.png

总之:在HTML文档中通过“javascript:” 伪协议调用JS代码的做法非常不好。

内嵌的事件处理函数

38883654d9754cf5723d64478bc4da7d.png

谁关心这个:搜索机器人是一种自动化的程序,它们浏览web的目的是把各种网页添加到搜索引擎的数据库里,各大搜索引擎都有类似的程序。目前只有极少数搜索机器人能够理解JS代码。所以如果你的JS网页不能平稳退化,它们在搜索引擎上的排名就可能大受伤害。

6c394b7c7fdd6dbd6c4e47130cfc8f80.png

优化一下:

7f9ee32c425e32339e68f5369c1ac480.png

分离JS:把网页的结构和内容与JS脚本的动作行为分开。

CSS技术最大的优点是:它能够帮助你将web文档的内部结构(标记)和版面设计(样式)分离出来。

真正能从CSS技术获益的方法是:把样式全部转移到外部文件中去。

作为CSS技术的突出优点,文档结构与文档样式的分离可以确保网页杜能平稳退化。

具备CSS支持的浏览器固然可以把网页呈现的美轮美奂,不支持或者禁用了CSS功能的浏览器同样可以把网页的内容按照正确的结构显示出来。

渐进增强

“标记良好的内容就是一切”

CSS指令构成了一个表示层。这个表示层就像是一张透明的彩色薄膜,可以包裹到文档的结构上,使文档内容呈现出色彩,但即使去掉这个表示层,文档的内容也依然可以访问(只是缺乏色彩而已)。

所谓“渐进增强”就是用一些额外的信息层去包裹原始数据。

按照“渐进增强”原则创建出来的网页几乎都符合“平稳退化”原则。

类似于CSS,JS和DOM提供的所有功能也应该构成一个额外的指令层。

CSS代码负责提供关于“表示”的信息,

JS代码负责提供“行为”的信息。

行为层的应用和表示层一样。

4505ba571df3c133c9002454adae308a.png

670bb47c9de9e3535aff9451751c46ad.png

向后兼容性:确保老版本的浏览器不会因为你的JS脚本而死掉。

对象检测:检测浏览器对JS的支持程度。

解决方案:只要把某个方法打包在一个if语句里,就可以根据这条if语句的条件表达式的求值结果是true(这个方法存在),还是false来决定应该采取怎样的行动。这种检测称为对象检测

b2941f7211ce46f35945b841df323abd.png

浏览器嗅探技术

指通过提取浏览器供应商提供的信息来解决向后兼容问题。

但是这是一种风险非常大的技术。

浏览器会撒谎、多种浏览器导致浏览器嗅探版本越来越复杂、每当出现新版本时就不得不修改这些脚本。

浏览器嗅探技术正在被简单也更健壮的对象检测技术所取代。

性能考虑:确定脚本执行的性能最优。

尽量少访问DOM和尽量减少标记

访问DOM的方式对脚本性能会产生非常大的影响。

不管什么时候,只要是查询DOM中的某些元素,浏览器都会搜索整个DOM树,从中查找可能匹配的元素。

合并和方式脚本

包含脚本的最佳方式就是使用外部文件。

脚本在标记中的位置对页面的初次加载时间也有很大影响。

位于head块中的脚本会导致浏览器无法并行加载其他文件(如图像和其他脚本)

一般来说,根据HTTP规范,浏览器每次从同一个域名中最多只能同时下载两个文件。在下载期间,浏览器不会下载其他任何文件。

把所有script标签都放在文档的末尾,body结束标签之前,就可以让页面变的更快。

压缩脚本

指的是把脚本文件中不必要的字节,如空格、注释统统删除,从而达到“压缩”文件的目的。

多数情况下,你应该有两个版本,一个是工作副本,可以修改代码并添加注释;

另一个是精简副本,用于放在站点上。最好在精简副本的文件名中加上.min字样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值