主要内容
- 如何使用script元素
- 嵌入脚本与外部脚本
- 文档模式对js的影响
- 考虑到如果js被禁用的情况
script元素属性
- async(异步)可以立刻下载脚本,不妨碍页面中的其它操作。只对外部脚本文件有效。
- charset 表示src属性指定代码的字符集。
- defer 表示脚本会延迟到文档完全被解析了之后在执行,支队外部脚本有效
- src 表示要执行的外部文件
- type 表示编写脚本代码的语言内容类型MIME。
经验
- js脚本中不能出现单独的</script> 或者 <script> 不然会报错。要使用转义字符/。 这种是一种语法的解析错误,属于解析器的规则。
- 引入外部js的文件后坠不是必须的,浏览器不会检查包含js文件的扩展名。这样无论文件本身是什么后缀,jsp,php 只要里面是js代码都可以在浏览器端运行。但是服务端通常是需要查看扩展名的。
- 嵌入代码忽略:如果在使用src来引入外部js,那么嵌入的代码会被忽略。
- src属性可以包含来自外部域的js文件,这一点是</script>元素很强。可以用来解决跨域,不过这意味着你所访问的外部域必须是稳定安全可信任的,否则一旦你所请求的资源被冒充或者替换,那么你很可能中病毒,或者被窃取信息。
- 无论任何代码,如果不存在defer和async,那么都会按照从1-n的顺序执行。
标签的位置
很久之前js被放在head里执行,而浏览器在遇到body的时候才会开始呈现内容,如果有很多脚本要加载,那么可能有很久的空白期,所以一般js会放在内容后面。保证先呈现内容在运行脚本下载。
- defer延迟脚本,虽然规则上是按他们出现的先后顺序执行,但是现实却并不一定是这样。
- async 更是不能保证按照先后顺序执行,脚本互相没有依赖性的时候可以使用
不支持的浏览器
- 遇到不支持的情况:让js包含在一个html注视中
- noscipt 元素 嵌入当浏览器不支持js的时候的文档内容。
嵌入代码与外部文件对比
- 可维护性高:易于你集中注意力在业务代码上。
- 可缓存:如果是放在同一个地方,不同页面加载的时候,也会直接去加载已经下载好的文件,而不需要重新去下载。极大的提升了性能。怎么避免packjson包的的重复下载。
- 适用于未来:通过外部引用的文件无需在使用前面注释hack
文档模式
文档的模式不一样会导致js的不兼容。
- 混杂模式
- 标准模式
- 留在周末添加
小结:
使用js的几种方式:
- 嵌入式
- 外部引用
需要注意的几点:
- src 读取相应文件的url,但是它可以是同意服务器的文件,也可以是外部服务器的文件。
- 一般js会放到内容的后面,浏览器会先解析未使用defer延迟属性的js。
- defer延迟可以做到文档加载完以后在执行脚本
- async 表示脚本非阻塞的,不必等待其它脚本。
- noscript 用于不支持js的浏览器。