在写静态页面的时候动态加载模块一直是个问题,以前只能用 iframe, ajax
等动态加载,这样整体的加载效果很差,最近才发现 HTML 中可以使用 import
导入。
使用
1 | <head> |
link
中 href
中的导入地址必须允许跨域。
浏览器的网络协议栈(network stack)会对访问相同 URL 的请求自动去重。这意味着从同一个 URL 导入的内容只会被获取一次。无论这个地址被导入多少次,最终它将只执行一次。
检查是否可用
1 | function supportsImports() { |
link.import
若想访问导入的内容,需要使用 link 元素的 import 属性:
1 | var content = document.querySelector('link[rel="import"]').import; |
在下面几种情况下,link.import 值为 null :
- 浏览器不支持 HTML 导入。
- 没有 rel=”import”。
- 没有被加入到 DOM 中。
- 从 DOM 中被移除。
- 资源没有开启 CORS。
实例
假设 warnings.html 包含如下内容:
1 | <div class="warning"> |
导入页面中
1 | <head> |
包含模板
HTML Template 元素是 HTML 导入的好搭档。 特别适合于为需要导入的应用搭建必要的标记。将内容包裹在一个 元素中还为你提供了延迟加载内容的好处。也就是说,在 template 元素加入到 DOM 之前,它包含的脚本不会执行。
import.html
1 | <template> |
index.html
1 | <head> |
最近热读
扫码关注公众号,或搜索公众号“温欣爸比”
及时获取我的最新文章