上一篇
html导入js
- 行业动态
- 2025-05-13
- 8
HTML导入JS通过“标签实现,支持src路径
HTML导入JavaScript的常见方式
基本<script>
标签导入
- 语法:直接在HTML中通过
<script>
标签引入JavaScript文件或内联代码。 - 位置:通常放在
<head>
或<body>
标签内。 - 示例:
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>导入JS示例</title> <!-外部JS文件 --> <script src="main.js"></script> <!-内联JS代码 --> <script> document.addEventListener('DOMContentLoaded', function() { console.log('页面加载完成'); }); </script> </head> <body> <!-也可以将<script>放在底部 --> <script src="utils.js"></script> </body> </html>
异步加载(async
属性)
- 作用:并行加载脚本,不阻塞页面解析,加载完成立即执行。
- 适用场景:第三方库(如广告、分析工具),无需等待其执行即可渲染页面。
- 示例:
<script src="analytics.js" async></script>
延迟加载(defer
属性)
- 作用:并行加载脚本,但延迟到HTML解析完成后按顺序执行。
- 适用场景:依赖DOM元素的脚本,需确保页面结构加载完成。
- 示例:
<script src="app.js" defer></script>
ES6模块化导入
- 语法:使用
type="module"
启用ES6模块,通过import
语句引入。 - 特点:支持
import
/export
语法,需注意路径和浏览器兼容性。 - 示例:
<script type="module" src="main.js"></script>
// main.js import { greet } from './utils.js'; greet('World');
不同导入方式的对比表
特性 | 基本<script> | async | defer | ES6模块 |
---|---|---|---|---|
加载顺序 | 同步阻塞 | 并行无序 | 并行有序 | 按需加载依赖 |
执行时机 | 立即执行 | 加载完立即执行 | HTML解析后执行 | 依赖解析后执行 |
浏览器兼容性 | IE5+ | IE10+ | IE10+ | IE11+(需Polyfill) |
适用场景 | 简单脚本 | 第三方资源 | 依赖DOM的脚本 | 现代化项目 |
缓存机制 | 支持 | 支持 | 支持 | 需服务器配置CORS |
常见问题与解答
问题1:如何选择async
或defer
?
- 解答:
- 若脚本不依赖DOM元素且需尽快加载(如广告、统计代码),使用
async
。 - 若脚本依赖DOM结构或需按顺序执行(如页面初始化逻辑),使用
defer
。 - 若无特殊需求,建议将脚本放在
<body>
底部,避免阻塞渲染。
- 若脚本不依赖DOM元素且需尽快加载(如广告、统计代码),使用
问题2:ES6模块化导入时报错Failed to fetch
怎么办?
- 解答:
- 检查路径:确保
<script>
标签的src
路径正确,且服务器允许跨域访问。 - CORS配置:若模块文件来自不同域名,需服务器设置
Access-Control-Allow-Origin
。 - 本地开发:使用开发服务器(如
live-server
)或打包工具(如Webpack)处理
- 检查路径:确保