src和href都表示对外部资源的引用
src:表示对资源的引用,它指向的资源会被嵌入到当前标签的位置,src会将其指向的资源下载并应用到当前文档中,比如js,当浏览器解析到该标签,会暂停其他资源的下载和解析,直到该资源加载、解析、执行完成。所以一般情况会将js放在网页的底部。
href:表示超文本的引入,它指向一些网络资源,建立和当前元素或者文本的链接关系,当浏览器识别到他指向的资源时,就会对其进行下载,不会停止对当前文档的处理。常用在a、link等标签上。
这里说一下defer和async的区别:
引入脚本文件时,当没有defer或者async时。脚本文件会立即执行,阻塞当前的dom渲染。当有defer或者async时,dom渲染和加载脚本并行执行。他们的区别是,defer表示所有的dom渲染完成之后,才会去执行脚本。而async表示,只要脚本加载完成就会立即执行,中断当前的dom渲染,直到脚本加载完成之后,才会继续进行渲染。