考察点:资源加载机制、浏览器解析行为
这两个属性虽然都用于引用外部资源,但浏览器的处理机制完全不同。
href(Hypertext Reference)主要用于建立当前文档与外部资源之间的链接关系。比如 <link> 引入 CSS 或 <a> 标签。当浏览器解析到 href 时,它会并行下载资源,但不会停止对当前文档的解析。也就是说,它是‘非阻塞’的(针对 CSS 而言,JS 如果用 link preload 也是类似逻辑,但通常 href 指代链接)。
而 src(Source)则是将外部资源嵌入到当前文档中。最典型的就是 <script src="..."> 或 <img src="...">。当浏览器遇到 <script src> 时,它会暂停 DOM 的解析,立即下载并执行脚本,执行完后才继续解析后面的 HTML。这就是为什么我们通常建议把 JS 放在底部,或者使用 defer/async 属性的原因,以避免阻塞渲染。
简单总结:href 是‘链接’,并行加载不阻塞;src 是‘嵌入’,可能会阻塞解析(特指脚本)。