本教程向您展示如何将JavaScript代码嵌入HTML页面,来帮助您开始学习 JavaScript。
要将JavaScript插入HTML页面,请使用<script>
元素。在HTML页面中使用 <script>
元素有两种方式。
第一种是将JavaScript代码直接嵌入HTML页面。第二种是引用外部JavaScript文件。
通常不建议将JavaScript代码直接放在<script>
元素中,这种方式多是应用于概念验证或测试目的。
元素中的JavaScript代码<script>
是从上到下解释的。在下面的index.html
页面<script>
元素中,我们使用alert()
函数来显示Hello, World!
消息。
引用 JavaScript文件
要引用来自外部JavaScript文件。首先创建一个扩展名为.js
的文件,比如app.js
文件并将其放在js
子文件夹中。
虽然不需要将JavaScript文件放在单独的文件夹中,但这是一个很好的做法。然后在<script>
元素的src
属性设置URL,该URL指向JavaScript源代码文件。
如果您在Web浏览器打开helloworld.html
文件,您将看到一条警告消息Hello, World!
。
请注意,您可以从远程服务器加载JavaScript文件。这允许您从其它域引用JavaScript 文件,最常见的做法使用内容交付CDN加速页面Javascript文件的载入。
当页面上有多个 JavaScript 文件时,JavaScript引擎会按照文件出现的顺序解释这些文件。
在此示例中,JavaScript引擎将依次解释service.js
和app.js
文件。换句话说,在解释app.js
文件之前,浏览器会先完成 service.js
文件的解释。
<script src="js/service.js"></script>
<script src="js/app.js"></script>
对于包含许多外部JavaScript文件的页面,在页面渲染阶段将会显示空白的页面。
为避免这种情况,您可以在</body>
标签之前包含JavaScript文件。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript Hello World Example</title>
</head>
<body>
<!-- end of page content here-->
<script src="js/service.js"></script>
<script src="js/app.js"></script>
</body>
</html>
async和defer属性
要更改浏览器加载和执行JavaScript文件的方式,您可以使用<script>
元素的两个属性async
和defer
。
这些属性只对外部包含外部脚本文件生效。async
属性指示Web浏览器异步执行JavaScript文件。
脚本及其所有依赖都会在延缓队列中执行,因此它们会被并行请求,并尽快解析和执行。
async
属性能够消除解析阻塞的Javascript。解析阻塞的Javascript会导致浏览器必须加载并且执行脚本,之后才能继续解析。
async
属性不保证Javascript文件按照它们出现的顺序执行。例如以下test.html
的两个script
标签,都添加async
属性使用javascript文件异步运行。
app.js
文件可能在service.js
文件之前执行。也可能会在service.js
文件执行之后运行。因此,您必须确保它们之间没有依赖关系。
script
元素defer
属性表示当浏览器在HTML文档解析完成后再运行javascript文件。
即使我们将<script>
元素放在<head>
节中,脚本也会等待浏览器解释完HTML文档才开始运行javascript文件。
当一个HTML页面中包含两个script
元素并设置defer
属性时,将出现的顺序运行两个script元素Javascript文件。
通常设置defer
属性script
元素将不再需要设置async
属性,因为defer也有async类似的能力。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript defer demonstration</title>
<script defer src="app.js"></script>
<script defer src="service.js"></script>
</head>
<body>
</body>
</html>
结论
你已经知道如何使用<script>
元素在HTML页面包含JavaScript文件。
<script>
元素的async
属性<script>
指示Web浏览器并行获取JavaScript文件,然后在JavaScript文件可用时立即解析和执行。
<script>
元素的defer
属性允许Web浏览器在HTML文档解析完成运行JavaScript文件。