美文网首页
2.2 行内代码与外部文件、2.3 文档模式、2.4

2.2 行内代码与外部文件、2.3 文档模式、2.4

作者: Wuthier | 来源:发表于2021-01-25 08:39 被阅读0次

2.2 行内代码与外部文件

虽然可以直接在 HTML 文件中嵌入 JavaScript 代码,但通常认为最佳实践是尽可能将 JavaScript 代
码放在外部文件中。

  • 可维护性。JavaScript 代码如果分散到很多 HTML 页面,会导致维护困难。而用一个目录保存
    所有 JavaScript 文件,则更容易维护,这样开发者就可以独立于使用它们的 HTML 页面来编辑
    代码。
  • 缓存。浏览器会根据特定的设置缓存所有外部链接的 JavaScript 文件,这意味着如果两个页面都
    用到同一个文件,则该文件只需下载一次。这最终意味着页面加载更快。
  • 适应未来。通过把 JavaScript 放到外部文件中,就不必考虑用 XHTML 或前面提到的注释黑科技。
    包含外部 JavaScript 文件的语法在 HTML 和 XHTML 中是一样的。

2.3 文档模式

IE5.5 发明了文档模式的概念,即可以使用 doctype 切换文档模式。

最初的文档模式有两种:

  • 混杂模式(quirks mode)。在所有浏览器中都以省略文档开头的 doctype 声明作为开关。
  • 标准模式(standards mode)。通过下列几种文档类型声明开启:
<!-- HTML 4.01 Strict -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<!-- XHTML 1.0 Strict -->
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- HTML5 -->
<!DOCTYPE html>

随着浏览器的普遍实现,又出现了第三种文档模式:

  • 准标准模式(almost standards mode)。这种模式下的浏览器支持很多标准的特性,但是没
    有标准规定得那么严格。主要区别在于如何对待图片元素周围的空白(在表格中使用图片时最明显)。

准标准模式与标准模式非常接近,很少需要区分。

2.4 <noscript> 元素

针对早期浏览器不支持 JavaScript 的问题,需要一个页面优雅降级的处理方案。最终, <noscript>
元素出现,被用于给不支持 JavaScript 的浏览器提供替代内容。

  • 浏览器不支持脚本;
  • 浏览器对脚本的支持被关闭。

任何一个条件被满足,包含在 <noscript> 中的内容就会被渲染。否则,浏览器不会渲染 <noscript>中的内容。

2.5 小结

JavaScript 是通过 <script> 元素插入到 HTML 页面中的。这个元素可用于把 JavaScript 代码嵌入到
HTML 页面中,跟其他标记混合在一起,也可用于引入保存在外部文件中的 JavaScript。

  • 要包含外部 JavaScript 文件,必须将 src 属性设置为要包含文件的 URL。文件可以跟网页在同
    一台服务器上,也可以位于完全不同的域。
  • 所有 <script> 元素会依照它们在网页中出现的次序被解释。在不使用 defer 和 async 属性的
    情况下,包含在 <script> 元素中的代码必须严格按次序解释。
  • 对不推迟执行的脚本,浏览器必须解释完位于 <script> 元素中的代码,然后才能继续渲染页面
    的剩余部分。为此,通常应该把 <script> 元素放到页面末尾,介于主内容之后及 </body> 标签之前。
  • 可以使用 defer 属性把脚本推迟到文档渲染完毕后再执行。推迟的脚本原则上按照它们被列出
    的次序执行。
  • 可以使用 async 属性表示脚本不需要等待其他脚本,同时也不阻塞文档渲染,即异步加载。异
    步脚本不能保证按照它们在页面中出现的次序执行。
  • 通过使用 <noscript> 元素,可以指定在浏览器不支持脚本时显示的内容。如果浏览器支持并启
    用脚本,则 <noscript> 元素中的任何内容都不会被渲染。

学习下一篇文章

相关文章

网友评论

      本文标题:2.2 行内代码与外部文件、2.3 文档模式、2.4

      本文链接:https://www.haomeiwen.com/subject/esgszktx.html