登录
首页 >  文章 >  前端

HTML中script标签使用详解

时间:2025-07-29 18:10:48 285浏览 收藏

`标签之间。

HTML中的脚本标签怎么用? script标签使用详解



    
    内联脚本示例


    

欢迎来到我的页面

这种方式适合代码量较小、特定页面独有的脚本。它的优点是请求少,但缺点也很明显:代码复用性差,维护困难,并且混合了HTML和JS,不利于内容与行为分离。

2. 外部脚本: 通过src属性链接到一个外部的JavaScript文件。这是更推荐的做法,特别是对于大型项目或需要复用的脚本。

HTML中的脚本标签怎么用? script标签使用详解



    
    外部脚本示例


    

欢迎来到我的页面

对应的scripts/main.js文件内容可能如下:

// scripts/main.js
document.addEventListener('DOMContentLoaded', function() {
    const button = document.getElementById('myButton');
    if (button) {
        button.addEventListener('click', function() {
            alert('你点击了外部脚本控制的按钮!');
            console.log('外部脚本执行了。');
        });
    }
});

这种方式的好处是显而易见的:代码组织更清晰,易于维护和复用,而且浏览器可以缓存外部JS文件,提高加载速度。

除了src属性,

在这个例子中,lib.js会保证在main.js之前执行。

  • async:而async则更像是一个“自由奔放”的模式。同样,浏览器会异步下载带有async属性的脚本,不会阻塞HTML解析。但与defer不同的是,一旦脚本下载完成,它就会立即执行,不等待HTML解析完成,也不保证多个async脚本的执行顺序。哪个脚本先下载完,哪个就先执行。这就像一场赛跑,谁先冲过终点线谁就赢。这种行为非常适合那些独立性强、不依赖DOM也不被其他脚本依赖的脚本,比如第三方统计代码、广告脚本等。它们不关心执行顺序,只希望尽快加载并运行。

    
        
        
    

    在这里,analytics.jsads.js哪个先执行是无法确定的,取决于它们的下载速度。

  • 在我看来,选择defer还是async,关键在于你的脚本是否有序依赖,以及是否需要操作完整的DOM。如果脚本之间有依赖,或者需要等待DOM结构就绪,defer通常是更好的选择。如果脚本是完全独立的,并且越快执行越好,那么async就能提供最大的性能优势。理解这一点,能帮助你做出更明智的性能优化决策。

    除了JavaScript,script标签还能做什么?——MIME类型与模块化脚本

    虽然我们日常开发中几乎都用

    对应的modules/app.js可能长这样:

    // modules/utils.js
    export function greet(name) {
        return `Hello, ${name}!`;
    }
    
    // modules/app.js
    import { greet } from './utils.js'; // 导入模块
    
    document.addEventListener('DOMContentLoaded', () => {
        const message = greet('World');
        console.log(message);
        document.body.innerHTML += `

    ${message}

    `; });

    type="module"搭配使用的还有nomodule属性。如果你的用户群体中还有一些老旧浏览器不支持ES模块,你可以提供一个带有nomodule属性的脚本作为回退方案。

    
    

    支持ES模块的浏览器会加载并执行modern-app.js,同时忽略legacy-app.js。而那些不支持ES模块的浏览器则会忽略modern-app.js,转而加载并执行legacy-app.js。这种方式提供了一种非常优雅的渐进增强策略。

    在我看来,type="module"是前端工程化发展的一个重要标志,它让浏览器原生支持了模块化,极大地简化了前端项目的结构和依赖管理。虽然在实际项目中,我们可能依然会使用Webpack、Vite等打包工具来处理模块、优化代码,但理解原生ES模块的工作原理,无疑是理解现代前端开发基石的关键。

    以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于文章的相关知识,也可关注golang学习网公众号。

    最新阅读
    更多>
    课程推荐
    更多>
    • 前端进阶之JavaScript设计模式
      前端进阶之JavaScript设计模式
      设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
      立即学习 542次学习
    • GO语言核心编程课程
      GO语言核心编程课程
      本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
      立即学习 511次学习
    • 简单聊聊mysql8与网络通信
      简单聊聊mysql8与网络通信
      如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
      立即学习 498次学习
    • JavaScript正则表达式基础与实战
      JavaScript正则表达式基础与实战
      在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
      立即学习 487次学习
    • 从零制作响应式网站—Grid布局
      从零制作响应式网站—Grid布局
      本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
      立即学习 484次学习