浏览器的外部资源引入方式是什么?
外部资源引入可以分为不遵守同源策略的(link,script,iframe)和遵守同源策略的XHR(Axios,Fetch)
不遵守同源策略: ①外部资源链接元素link:两个重要属性rel和href必须显示添加,rel有四个重要属性值
| rel | 作用 |
|---|---|
| icon | 文档图标 |
| stylesheet | css样式表导入 |
| preload | 预先缓存目标资源,优先级最高,html解析的时候就开始下载,而且必须在当前界面用到 |
| prefetch | 浏览器空闲的时候下载这个资源到缓存 |
②script:仅限于加载JS资源,script加载资源过后交由JS引擎执行,可选属性async和defer
| script | 作用 |
|---|---|
| 下载资源不会阻止渲染引擎解析html,下载完毕后JS引擎立即执行,阻塞html解析 | |
| 下载资源不会阻止渲染引擎解析html,下载完毕后等待,等html元素解析完成,DOMContentLoaded触发之后,再执行JS引擎 | |
| 下载资源会阻止引擎解析html,下载完毕后JS引擎立即执行,阻塞html解析 |
③获取HTML资源iframe:父域和子域的iframe样式和脚本互不影响,但是他们的线程共用同一个GUI线程和JS执行线程,子线程的操作会阻塞父线程,所以不能作为WebWorker和子应用的替代方案
遵守同源策略(不能跨域) ①img,audio,video标签 ②XHR系列:提供一个开放的接口,将请求的数据暴露给开发者,开发者可以自定义数据处理的方式。由于自定义程度高,所以必须保证安全性,遵守同源策略