2019-12-05 如何引入JavaScript

分别通过 内部引用 和 外部引用 的方式引入下面一段JavaScript代码。

document.write('Hello World');

内部引用

内部引用包括行内引用,和内部引用,但基本没人用行内引用,就像css一样,都可以行内使用,但是会使代码看起来很杂很乱,不利于维护,当然也存在解析顺序的问题,导致页面加载很慢很乱,用户体验不好。下面列出两种引用的样例:
行内js:只适用于引用了js的标签

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <title>js的3种引入方法</title>
</head>

<body>
  <input type="button" value="点击有惊喜" onclick="javascript:document.write('Hello World');" />
</body>

</html>

内部js:script里的程序整个页面都可以用

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <title>js的3种引入方法</title>
  <script type="text/javascript">
    document.write('Hello World');
  </script>
</head>

<body>
  <h1>这是一段没有意义的文字</h1>
</body>

</html>

注意:
按照解析嵌入式代码的规则,当浏览器遇到字符串"</script>"时,就会认为那是结束的标志。所以我们需要通过转义字符\解决

<script type="text/javascript">
    function myFunction(argument) {
        alert("<\/script>")
    }
 </script>

外部引用

和css引入方式类似

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <title>js的3种引入方法</title>
  <script type="text/javascript" src="introduce.js"></script>
</head>

<body>
  <h1>这是一段没有意义的文字</h1>
</body>

</html>

注意:
把标签放在head下,意味着必须等到全部js代码下载、解析和执行完成以后才开始呈现页面内容(因为浏览器在遇到body标签时才开始呈现页面内容),这对于Js代码很多的页面来说,无疑会造成页面显示的明显延迟,延迟期间页面一片空白。
为了避免这个问题,将所有的javaScript代码放在<body>元素中页面内容的后面。

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <div>这里是页面内容,最后放JavaScript代码</div>
    <script type="text/javascript" src="introduce.js"></script>
</body>
</html>

总结

<script>元素,有6个属性

属性 描述
async async 规定异步执行脚本(仅适用于外部脚本)
charset charset 规定在外部脚本文件中使用的字符编码
defer defer 规定是否对脚本执行进行延迟,直到页面加载为止
type MIME-type 指示脚本的MIME类型
src URL 规定外部脚本文件的URL

从属性中可以看出,async可以异步执行,defer可以延时执行,似乎可以解决<script>放在<head>中的解析顺序的问题,但是他们都不能保证脚本的执行顺序。下面总结一下引入脚本的规则:

  • 包含外部文件时,必须将src属性指向为外部脚本的路径
  • 在不使用deferasync属性情况下,所有的脚本按照顺序解析执行
  • 将js脚本引入放在页面最底部为最佳选择
  • 使用defer属性脚本立即下载,延后执行
  • 使用async属性表示当前脚本不比等待其他脚本,不能保证脚本的执行顺序
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容