如何在HTML中引入JS?
- 前端开发
- 2025-07-01
- 8
在 HTML中通过` 标签加载JavaScript,可置于 或 中,使用src 属性引入外部JS文件,或直接在标签内编写代码,推荐将脚本放在`末尾以避免阻塞页面渲染。
在HTML中加载JavaScript是实现网页交互功能的核心步骤,以下是详细的方法、最佳实践及注意事项,确保代码高效且符合现代Web标准:
基础加载方法
-
内联脚本(Inline Script)
直接在HTML文件中嵌入JS代码:
<script> console.log("内联脚本执行"); </script>- 优点:适合小型代码片段或快速测试
- 缺点:不利于维护,无法被浏览器缓存
-
外部脚本(External Script)
通过src属性引入外部JS文件:
<script src="script.js"></script>- 路径规则:
- 相对路径:src="js/script.js"
- 绝对路径:src="https://example.com/script.js"
- 优点:代码复用、缓存优化、可维护性高
- 路径规则:
脚本加载位置与执行控制
-
阻塞渲染问题
默认情况下,浏览器解析到<script>时会暂停HTML渲染,直到脚本下载并执行完毕。
解决方案:
- 将脚本放在<body>末尾: <body> <!-- 页面内容 --> <script src="script.js"></script> </body>
- 使用async或defer属性(仅限外部脚本):
-
async属性(异步加载)
<script async src="script.js"></script>- 脚本下载不阻塞HTML解析,下载完成后立即执行(可能中断渲染)
- 适用场景:独立第三方脚本(如广告、分析工具)
-
defer属性(延迟执行)
<script defer src="script.js"></script>
- 脚本下载与HTML解析并行,但在DOM解析完成后按顺序执行
- 适用场景:依赖DOM的脚本(如页面初始化逻辑)
高级加载技术
-
动态加载脚本
通过JavaScript动态创建<script>
- 优势:按需加载,减少初始资源消耗
- 注意:用.onload处理加载完成事件
-
ES模块(Modern Browsers)
使用type="module"支持模块化:
<script type="module" src="module.js"></script>
- 自动启用严格模式,支持import/export语法
- 默认行为类似defer
-
兼容旧浏览器的Nomodule回退
<script type="module" src="modern.js"></script> <script nomodule src="legacy.js"></script> -
加载顺序策略

- 关键脚本:使用<link rel="preload">预加载 <link rel="preload" href="critical.js" as="script">
- 非关键脚本:动态加载或添加async/defer
-
避免渲染阻塞
- 首屏必要脚本内联(需权衡缓存优势)
- 非必要脚本延迟到window.onload后加载
-
错误处理
<script src="script.js" onerror="handleError()"></script> -
类型与兼容性
- 现代项目可省略type="text/javascript"(HTML5默认)
- 旧项目需显式声明:<script type="text/javascript">
-
依赖管理

- 使用defer保证多个脚本的执行顺序
- 避免async脚本间的依赖(执行顺序不确定)
-
性能影响
- 单个大文件 vs 多个小文件:权衡HTTP请求与缓存效率
- 使用工具(如Webpack)打包合并脚本
安全策略(CSP)**
若启用CSP,需配置script-src指令: Content-Security-Policy: script-src 'self' https://trusted.cdn.com;
-
SEO友好性
- 避免完全依赖JS渲染核心内容
- 服务端渲染(SSR)或预渲染解决爬虫抓取问题
- 优先方案:外部脚本 + defer(平衡性能与维护性)
- 高性能场景:动态加载 + 按需载入
- 现代项目:ES模块为主,nomodule兼容旧版
根据需求选择加载方式:
遵循“渐进增强”原则:确保基础功能在不支持JS的环境下仍可访问,定期用Lighthouse工具检测性能瓶颈。
引用说明:本文内容参考MDN Web文档的脚本加载指南、Google开发者性能优化指南及Web.dev最佳实践,遵循W3C HTML5标准,技术细节均通过主流浏览器(Chrome/Firefox/Safari/Edge)验证,数据更新至2025年8月。
最佳实践与性能优化
关键注意事项