RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
HTML5中怎么导入文件

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

10年积累的网站制作、成都网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有青山免费网站建设让你可以放心的选择与我们合作。

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中怎么导入文件”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


文章标题:HTML5中怎么导入文件
浏览地址:http://cqwzjz.cn/article/jpgsgs.html