千家信息网

HTML5中怎么导入文件

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容主要讲解"HTML5中怎么导入文件",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"HTML5中怎么导入文件"吧!Template,Shadow DO
千家信息网最后更新 2026年11月03日HTML5中怎么导入文件

本篇内容主要讲解"HTML5中怎么导入文件",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"HTML5中怎么导入文件"吧!

Template,Shadow DOM和Custom Elements让您创建UI组件比以前更容易了。但是像HTML,CSS,JavaScript这样的资源仍然需要一个个地去加载,这是很没效率的。

例如,现在加载jQuery UI或Bootstrap就需要为JavaScript,CSS及Web字体添加单独的标签。如果您的Web组件应用了多重的依赖,那事情就变得更加复杂。

HTML导入让您以一个合并的HTML文件来加载这些资源。使用HTML导入

为加载一个HTML文件,您需要增加一个链接标签,其相关属性为import,herf属性是HTML文件的路径。例如,如果您想把component.html加载到index.html:

index.html

XML / HTML代码将内容复制到文本

< link rel = " import" href = " component.html" >

您可以往HTML导入文件(译者注:此处将"导入的HTML"译为" HTML导入文件",将"原始HTML"译为" HTML主文件"。例如,index.html是HTML主文件, component.html是HTML导入文件。)添加任何的资源,包括脚本,样式表和字体,就跟往普通的HTML添加资源一样。

component.html

XML / HTML代码将内容复制到文本

< link rel = " stylesheet" href = " css / style.css" >

<脚本src = " js / script.js" >

doctype,html,head,body这些标签是不需要的。HTML导入会立即加载要引入的文档,解析文档中的资源,如果有脚本的话也会立即执行它们。执行顺序

浏览器解析HTML文档的方式是线性的,这就是说HTML顶部的脚本会比底部先执行。并且,浏览器通常会等到JavaScript代码执行完毕后,才会接着解析后面的代码。

为了不让脚本压缩HTML的渲染,你可以在标签中添加async或Defer属性(或者你也可以将脚本标签放到页面的底部)。defer属性会重复脚本的执行,直到全部页面解析完成。async属性让浏览器初始化地执行脚本,从而不会阻止HTML的渲染。那么,HTML导入是怎样工作的呢?

HTML导入文件中的脚本就跟着包含defer属性一样。例如在下面的示例中,index.html会先执行script1.js和script2.js,然后再执行script3.js。

index.html

XML / HTML代码将内容复制到文本

< link rel = " import" href = " component.html" > // 1。

< title >导入示例

< script src = " script3.js" > // 4。

component.html

XML / HTML代码将内容复制到文本

< script src = " js / script1.js" > // 2。

< script src = " js / script2.js" > // 3。

1.在index.html中加载component.html并等待执行

2.执行component.html中的script1.js

3.执行完script1.js后执行component.html中的script2.js

4.执行完script2.js继而执行index.html中的script3.js

注意,如果给link [rel =" import"]添加异步属性,HTML导入会把它当做包含异步属性的脚本来对待。它不会等待HTML导入文件的执行和加载,这意味着HTML导入不会阻止HTML主文件的渲染。这也给提升网站性能带来了可能,除非有其他的脚本依赖于HTML引入文件的执行。跨域引入

从根本上说,HTML引入是不能从其他的域名引入资源的。

例如,您不能从http://webcomponents.org/向http://example.com/导入HTML文件。为了绕过这个限制,可以使用CORS(跨域资源共享)。想了解CORS,请看这篇文章。HTML导入文件中的窗口和文档对象

前面我提过在引入HTML文件的时候里面的脚本是会被执行的,但这并不意味着HTML引入文件中的标签也会被浏览器渲染。你需要写一些JavaScript代码来帮忙。

当在HTML导入文件中使用JavaScript时,有一点要提防的是,HTML导入文件中的文档对象实际上指的是HTML主文件中的文档对象。以前面的代码为例,index.html和组件。 html的文档都是指index.html的文档对象。怎么才能使用HTML导入文件中的文档呢?可以链接中的导入属性。

index.html

XML / HTML代码将内容复制到文本

var link = document .querySelector('link [ rel = " import" ]');

link.addEventListener('load',function(e){

var importedDoc = 链接.import;

// importedDoc指向component.html下的文档

});

为了获取component.html中的文档对象,要使用document.currentScript.ownerDocument。

component.html

XML / HTML代码将内容复制到文本

var mainDoc = document .currentScript.ownerDocument;

// mainDoc指向component.html下的文档

如果您在用webcomponents.js,那么就用document._currentScript来代替document.currentScript。下划线用于填充currentScript属性,因为不是所有的浏览器都支持这个属性。

component.html

XML / HTML代码将内容复制到文本

var mainDoc = document ._currentScript.ownerDocument;

// mainDoc指向component.html下的文档

通过在脚本开头添加下面的代码,您就可以轻松地访问component.html中的文档对象,而不用管浏览器是不是支持HTML导入。document._currentScript = document._currentScript || document.currentScript;性能方面的考虑

使用HTML引入的一个好处是能够将资源组织起来,但是也意味着在加载这些资源的时候,由于使用了一些额外的HTML文件而让它们变得过大。有几点是需要考虑的:解析依赖

例如,您要从导入文件中加载jQuery,如果每个引入文件都包含加载jQuery的script标签,则如果HTML主文件要依赖多个导入文件,而且引入文件中包含相同的库,这时会怎样呢?那么jQuery就会被加载两次,并且也会被执行两次。

index.html

XML / HTML代码将内容复制到文本

< link rel = " import" href = " component1.html" >

< link rel = " import" href = " component2.html" >

component1.html

XML / HTML代码将内容复制到文本

<脚本src = " js / jquery.js" >

component2.html HTML引入自动帮你解决了这个问题。

以前面的代码为例,通过将加载jQuery脚本标签的做法不同,HTML引入对已经加载过的HTML文件进行进行,并通过加载jQuery的脚本标签打包成一个HTML导入文件,这样jQuery就只被加载和执行一次了。

而是还有一个问题:我们增加了一个要加载的文件。怎么处理多个扩展的文件呢?幸运的是,我们有一个叫vulcanize的工具来解决这个问题。合并网络请求

Vulcanize能将多个HTML文件合并成一个文件,从而减少了网络连接数。您可以通过npm安装它,并使用命令行来使用它。您可能同时使用grunt和gulp托管一些任务,这样的话你可以把vulcanize作为建造过程的一部分。

为了解析依赖以及合并index.html中的引入文件,使用如下命令:

复制代码

代码如下:

$ vulcanize -o vulcanized.html index.html

通过执行这个命令,index.html中的依赖会被解析,并且会产生一个合并的HTML文件,插入vulcanized.html。学习更多有关vulcanize的知识,请看这儿。

注意:http2的服务器推送功能被考虑为以后删除文件的链接与合并。把Template,Shadow DOM,自定义元素跟HTML引入结合起来

你之前可能没有看过这些文章,我先解释一下:Template可以让你用声明的方式定义你的自定义元素的内容。ShadowDOM可以让一个元素的样式,ID,类只作用到其本身。自定义元素可以让你自定义HTML标签。通过把这些跟HTML引入结合起来,你自定义的网络组件会变为替代,具有重叠性。任何人添加一个Link标签就可以使用它。

x-component.html

XML / HTML代码将内容复制到文本

< template id = " template" >

<样式>

...

< div id = "容器" >

< img src = " http://webcomponents.org/img/logo.svg" >

< content select = " h2" >

<脚本>

//此元素将被注册到index.html

//因为`document`在这里是index.html中的那个

var XComponent = document .registerElement('x-component',{

原型:Object.create(HTMLElement.prototype,{

createdCallback:{

值:function(){

var root = this .createShadowRoot();

var template = document .querySelector('#template');

var clone = document .importNode(template.content,true);

root.appendChild(clone);

}

}

})

});

index.html

XML / HTML代码将内容复制到文本

...

< link rel = " import" href = " x-component.html" >

<身体>

< x分量>

< h2 >这是自定义元素

...

注意,因为X-component.html中的文档对象跟的index.html的一样,你没必要再写一些棘手的代码,它会自动为你注册。支持的浏览器

Chrome和Opera提供对HTML导入的支持,Firefox要在2014年12月后才支持(Mozilla表示Firefox不计划在最初提供对HTML导入的支持,并需要首先了解ES6的模块是如何实现的)。

您可以去chromestatus.com或caniuse.com查询浏览器是否支持HTML导入。想要在其他浏览器上使用HTML导入,可以使用webcomponents.js(原名platform.js)。

到此,相信大家对"HTML5中怎么导入文件"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

文件 代码 文档 内容 脚本 属性 文本 标签 浏览器 资源 浏览 对象 支持 元素 组件 链接 面的 命令 多个 意味 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技企业 高科技互联网 科技赋能下的互联网金融 期待互联网科技 朗涯互联网科技 居家互联网科技有限公司 互联网科技素材视频竖屏 互联网科技有哪些公司 花神(南京)互联网科技有限公司 浙南科技城互联网大厦建设工程 高科技互联网发展前景如何 互联网公司高科技产品 互联网相关科技技术 珠海东科互联网科技有限公司 科技互联网专业工作会议发言稿 亚光科技低轨卫星互联网 黑龙江互联网科技公司 重庆科技产业互联网有哪些 每日互联网科技新闻 互联网 科技节活动 微视频大赛 喔噻互联网科技有限公司 云之行互联网科技 远信互联网科技 安徽鑫晟辉互联网科技 温州喔噻互联网科技有限公司 新兴科技互联网创新大赛颁奖典礼 为客找房互联网科技公司怎么样 互联网科技圈年度人物 南京一网一红互联网科技有限公司 北京军民互联网科技公司
0