中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

簡(jiǎn)單介紹HTML5中的文件導(dǎo)入
來源:易賢網(wǎng) 閱讀:2462 次 日期:2016-07-09 11:21:54
溫馨提示:易賢網(wǎng)小編為您整理了“簡(jiǎn)單介紹HTML5中的文件導(dǎo)入”,方便廣大網(wǎng)友查閱!

這篇文章主要介紹了簡(jiǎn)單介紹HTML中的文件導(dǎo)入,包括加載jQuery、導(dǎo)入后的執(zhí)行順序等知識(shí)點(diǎn),需要的朋友可以參考下

Template、Shadow DOM及Custom Elements 讓你創(chuàng)建UI組件比以前更容易了。但是像HTML、CSS、JavaScript這樣的資源仍然需要一個(gè)個(gè)地去加載,這是很沒效率的。

刪除重復(fù)依賴也并不簡(jiǎn)單。例如,現(xiàn)在加載jQuery UI或Bootstrap就需要為JavaScript、CSS及Web Fonts添加單獨(dú)的標(biāo)簽。如果你的Web 組件應(yīng)用了多重的依賴,那事情就變得更為復(fù)雜。

HTML 導(dǎo)入讓你以一個(gè)合并的HTML文件來加載這些資源。

使用HTML導(dǎo)入

為加載一個(gè)HTML文件,你需要增加一個(gè)link標(biāo)簽,其rel屬性為import,herf屬性是HTML文件的路徑。例如,如果你想把component.html加載到index.html:

index.html

XML/HTML Code

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

你可以往HTML導(dǎo)入文件(譯者注:本文將“ the imported HTML”譯為“HTML導(dǎo)入文件”,將“the original HTML”譯為“HTML主文件”。例如,index.html是HTML主文件,component.html是HTML導(dǎo)入文件。)添加任何的資源,包括腳本、樣式表及字體,就跟往普通的HTML添加資源一樣。

component.html

XML/HTML Code

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

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

doctype、html、 head、 body這些標(biāo)簽是不需要的。HTML 導(dǎo)入會(huì)立即加載要導(dǎo)入的文檔,解析文檔中的資源,如果有腳本的話也會(huì)立即執(zhí)行它們。

執(zhí)行順序

瀏覽器解析HTML文檔的方式是線性的,這就是說HTML頂部的script會(huì)比底部先執(zhí)行。并且,瀏覽器通常會(huì)等到JavaScript代碼執(zhí)行完畢后,才會(huì)接著解析后面的代碼。

為了不讓script 妨礙HTML的渲染,你可以在標(biāo)簽中添加async或defer屬性(或者你也可以將script 標(biāo)簽放到頁(yè)面的底部)。defer 屬性會(huì)延遲腳本的執(zhí)行,直到全部頁(yè)面解析完畢。async 屬性讓瀏覽器異步地執(zhí)行腳本,從而不會(huì)妨礙HTML的渲染。那么,HTML 導(dǎo)入是怎樣工作的呢?

HTML導(dǎo)入文件中的腳本就跟含有defer屬性一樣。例如在下面的示例中,index.html會(huì)先執(zhí)行script1.js和script2.js ,然后再執(zhí)行script3.js。

index.html

XML/HTML Code

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

<title>Import Example</title>  

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

component.html

XML/HTML Code

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

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

1.在index.html 中加載component.html并等待執(zhí)行

2.執(zhí)行component.html中的script1.js

3.執(zhí)行完script1.js后執(zhí)行component.html中的script2.js

4.執(zhí)行完 script2.js繼而執(zhí)行index.html中的script3.js

注意,如果給link[rel="import"]添加async屬性,HTML導(dǎo)入會(huì)把它當(dāng)做含有async屬性的腳本來對(duì)待。它不會(huì)等待HTML導(dǎo)入文件的執(zhí)行和加載,這意味著HTML 導(dǎo)入不會(huì)妨礙HTML主文件的渲染。這也給提升網(wǎng)站性能帶來了可能,除非有其他的腳本依賴于HTML導(dǎo)入文件的執(zhí)行。

跨域?qū)?/P>

從根本上說,HTML導(dǎo)入是不能從其他的域名導(dǎo)入資源的。

比如,你不能從http://webcomponents.org/向 http://example.com/ 導(dǎo)入HTML 文件。為了繞過這個(gè)限制,可以使用CORS(跨域資源共享)。想了解CORS,請(qǐng)看這篇文章。

HTML導(dǎo)入文件中的window和document對(duì)象

前面我提過在導(dǎo)入HTML文件的時(shí)候里面的腳本是會(huì)被執(zhí)行的,但這并不意味著HTML導(dǎo)入文件中的標(biāo)簽也會(huì)被瀏覽器渲染。你需要寫一些JavaScript代碼來幫忙。

當(dāng)在HTML導(dǎo)入文件中使用JavaScript時(shí),有一點(diǎn)要提防的是,HTML導(dǎo)入文件中的document對(duì)象實(shí)際上指的是HTML主文件中的document對(duì)象。以前面的代碼為例,index.html和  component.html 的document都是指index.html的document對(duì)象。怎么才能使用HTML導(dǎo)入文件中的document 呢?借助link中的import 屬性。

index.html

XML/HTML Code

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

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

  var importedDoc = link.import;   

  // importedDoc points to the document under component.html   

});  

為了獲取component.html中的document 對(duì)象,要使用document.currentScript.ownerDocument.

component.html

XML/HTML Code

var mainDoc = document.currentScript.ownerDocument;   

// mainDoc points to the document under component.html  

如果你在用webcomponents.js,那么就用document._currentScript來代替document.currentScript。下劃線用于填充currentScript屬性,因?yàn)椴⒉皇撬械臑g覽器都支持這個(gè)屬性。

component.html

XML/HTML Code

var mainDoc = document._currentScript.ownerDocument;   

// mainDoc points to the document under component.html   

通過在腳本開頭添加下面的代碼,你就可以輕松地訪問component.html中的document對(duì)象,而不用管瀏覽器是不是支持HTML導(dǎo)入。

document._currentScript = document._currentScript || document.currentScript;

性能方面的考慮

使用HTML 導(dǎo)入的一個(gè)好處是能夠?qū)①Y源組織起來,但是也意味著在加載這些資源的時(shí)候,由于使用了一些額外的HTML文件而讓頭部變得過大。有幾點(diǎn)是需要考慮的:

解析依賴

假如HTML主文件要依賴多個(gè)導(dǎo)入文件,而且導(dǎo)入文件中含有相同的庫(kù),這時(shí)會(huì)怎樣呢?例如,你要從導(dǎo)入文件中加載jQuery,如果每個(gè)導(dǎo)入文件都含有加載jQuery的script標(biāo)簽,那么jQuery就會(huì)被加載兩次,并且也會(huì)被執(zhí)行兩次。

index.html

XML/HTML Code

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

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

component1.html

XML/HTML Code

<script src="js/jquery.js"></script>  

component2.html

HTML導(dǎo)入自動(dòng)幫你解決了這個(gè)問題。

與加載兩次script標(biāo)簽的做法不同,HTML 導(dǎo)入對(duì)已經(jīng)加載過的HTML文件不再進(jìn)行加載和執(zhí)行。以前面的代碼為例,通過將加載jQuery的script標(biāo)簽打包成一個(gè)HTML導(dǎo)入文件,這樣jQuery就只被加載和執(zhí)行一次了。

但這還有一個(gè)問題:我們?cè)黾恿艘粋€(gè)要加載的文件。怎么處理數(shù)目膨脹的文件呢?幸運(yùn)的是,我們有一個(gè)叫vulcanize的工具來解決這個(gè)問題。

合并網(wǎng)絡(luò)請(qǐng)求

Vulcanize 能將多個(gè)HTML文件合并成一個(gè)文件,從而減少了網(wǎng)絡(luò)連接數(shù)。你可以借助npm安裝它,并且用命令行來使用它。你可能也在用 grunt和gulp 托管一些任務(wù),這樣的話你可以把vulcanize作為構(gòu)建過程的一部分。

為了解析依賴以及合并index.html中的導(dǎo)入文件,使用如下命令:

復(fù)制代碼代碼如下:

$ vulcanize -o vulcanized.html index.html

通過執(zhí)行這個(gè)命令,index.html中的依賴會(huì)被解析,并且會(huì)產(chǎn)生一個(gè)合并的HTML文件,稱作 vulcanized.html。學(xué)習(xí)更多有關(guān)vulcanize的知識(shí),請(qǐng)看這兒。

注意:http2的服務(wù)器推送功能被考慮用于以后消除文件的連結(jié)與合并。

把Template、Shadow DOM、自定義元素跟HTML導(dǎo)入結(jié)合起來

讓我們對(duì)這個(gè)文章系列的代碼使用HTML導(dǎo)入。你之前可能沒有看過這些文章,我先解釋一下:Template可以讓你用聲明的方式定義你的自定義元素的內(nèi)容。Shadow DOM可以讓一個(gè)元素的style、ID、class只作用到其本身。自定義元素可以讓你自定義HTML標(biāo)簽。通過把這些跟HTML導(dǎo)入結(jié)合起來,你自定義的web 組件會(huì)變得模塊化,具有復(fù)用性。任何人添加一個(gè)Link標(biāo)簽就可以使用它。

x-component.html

XML/HTML Code

<template id="template">  

  <style>  

    ...   

  </style>  

  <div id="container">  

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

    <content select="h1"></content>  

  </div>  

</template>  

<script>  

  // This element will be registered to index.html   

  // Because `document` here means the one in index.html   

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

    prototype: Object.create(HTMLElement.prototype, {   

      createdCallback: {   

        value: function() {   

          var root = this.createShadowRoot();   

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

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

          root.appendChild(clone);   

        }   

      }   

    })   

  });   

</script>  

index.html

XML/HTML Code

...   

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

</head>  

<body>  

  <x-component>  

    <h1>This is Custom Element</h1>  

  </x-component>  

  ...  

注意,因?yàn)閤-component.html 中的document 對(duì)象跟index.html的一樣,你沒必要再寫一些棘手的代碼,它會(huì)自動(dòng)為你注冊(cè)。

支持的瀏覽器

Chrome 和 Opera提供對(duì)HTML導(dǎo)入的支持,F(xiàn)irefox要在2014年12月后才支持(Mozilla表示Firefox不計(jì)劃在近期提供對(duì)HTML導(dǎo)入的支持,聲稱需要首先了解ES6的模塊是怎樣實(shí)現(xiàn)的)。

你可以去chromestatus.com或caniuse.com查詢?yōu)g覽器是否支持HTML導(dǎo)入。想要在其他瀏覽器上使用HTML導(dǎo)入,可以用webcomponents.js(原名platform.js)。

更多信息請(qǐng)查看網(wǎng)頁(yè)制作
易賢網(wǎng)手機(jī)網(wǎng)站地址:簡(jiǎn)單介紹HTML5中的文件導(dǎo)入
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!
相關(guān)閱讀網(wǎng)頁(yè)制作

2026上岸·考公考編培訓(xùn)報(bào)班

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
国产亚洲一区二区三区在线播放| 亚洲黑丝在线| 国产伦精品一区二区三区视频黑人| 亚洲成人直播| 欧美日韩福利在线观看| 中国成人亚色综合网站| 久久婷婷一区| aa级大片欧美三级| 国产精品美女久久久久久久| 欧美一级大片在线观看| 亚洲娇小video精品| 国产精品播放| 欧美ab在线视频| 亚洲一区视频在线观看视频| 国产亚洲日本欧美韩国| 欧美人与禽性xxxxx杂性| 久久国产精品网站| 亚洲一区二区三区午夜| 亚洲国产精品一区二区第一页| 欧美日韩人人澡狠狠躁视频| 久久久久国产精品厨房| 亚洲网在线观看| 亚洲精品韩国| 亚洲高清在线| 亚洲国产精选| 黄色精品一二区| 在线精品一区| 亚洲国产午夜| 亚洲欧洲视频在线| 亚洲国产高清一区| 亚洲国产另类精品专区 | 国产精品美女一区二区| 免费久久99精品国产| 免费影视亚洲| 欧美人在线观看| 国产精品免费一区二区三区在线观看| 欧美日韩国产片| 国产精品久久久久影院亚瑟| 国产精品日韩久久久| 国产欧美精品日韩| 亚洲国内自拍| 日韩一区二区精品| 亚洲欧美国产毛片在线| 久久久久网站| 欧美日韩在线视频一区二区| 国产精品丝袜xxxxxxx| 国内精品久久久久久久97牛牛| 国产专区欧美专区| 国产精品99久久久久久久久| 欧美一区二区三区在线免费观看| 久久久久国产精品www| 欧美xx69| 激情欧美日韩一区| 亚洲一区三区视频在线观看| 免费不卡在线观看av| 国产精品毛片高清在线完整版| 今天的高清视频免费播放成人| 亚洲精品日韩欧美| 麻豆成人小视频| 影音先锋中文字幕一区| 香蕉久久夜色精品国产使用方法| 欧美二区在线| 亚洲福利一区| 欧美韩日一区| 日韩特黄影片| 欧美日韩一区三区四区| 亚洲精品日本| 欧美日韩亚洲视频一区| 91久久一区二区| 欧美国产亚洲视频| 日韩视频永久免费观看| 欧美日韩国产精品| 亚洲天堂偷拍| 国产区在线观看成人精品| 亚洲在线1234| 一区二区在线不卡| 欧美精品在线观看一区二区| 99精品国产在热久久婷婷| 欧美日本国产精品| 午夜精品久久久久久久蜜桃app| 国产午夜精品视频免费不卡69堂| 久久狠狠婷婷| av成人免费观看| 国产日韩精品综合网站| 久久久精品欧美丰满| 亚洲三级色网| 国产真实乱偷精品视频免| 欧美激情精品久久久久久大尺度| 亚洲免费高清视频| 国产综合久久久久久| 欧美日韩免费观看中文| 久久综合影视| 亚洲性夜色噜噜噜7777| 在线看片欧美| 激情一区二区| 国产一区视频网站| 欧美三级资源在线| 欧美经典一区二区| 欧美1区2区| 久久综合999| 久久久久久久97| 久久精品国产欧美亚洲人人爽| 亚洲精品一区二区三| 永久免费精品影视网站| 国产一区二区黄| 国产农村妇女毛片精品久久麻豆| 欧美激情综合在线| 欧美国产大片| 欧美精品日本| 欧美日韩亚洲一区二区三区在线观看| 乱中年女人伦av一区二区| 巨乳诱惑日韩免费av| 亚洲一二三四久久| 亚洲手机成人高清视频| 亚洲一区日韩在线| 午夜精品99久久免费| 午夜精品一区二区三区电影天堂| 欧美一级夜夜爽| 久久精品视频播放| 久久午夜精品| 欧美三级视频在线观看| 国产午夜精品一区理论片飘花| 国产精品永久免费在线| 韩日午夜在线资源一区二区| 好吊妞这里只有精品| 亚洲午夜av电影| 久久久久久久综合日本| 欧美人妖在线观看| 在线 亚洲欧美在线综合一区| 日韩视频一区二区三区| 欧美一区二区视频在线| 欧美理论视频| 黄色工厂这里只有精品| 99re66热这里只有精品3直播| 亚洲一区精品在线| 欧美+日本+国产+在线a∨观看| 欧美日韩国产黄| 伊人色综合久久天天| 性久久久久久久| 欧美日韩中文字幕日韩欧美| 亚洲二区在线| 你懂的视频欧美| 精品成人久久| 久久综合中文| 亚洲黄色av| 久久一综合视频| 黄色亚洲网站| 另类专区欧美制服同性| 国产精品―色哟哟| 亚洲欧美日本国产专区一区| 国产精品日本欧美一区二区三区| 正在播放亚洲一区| 国产精品入口日韩视频大尺度| 亚洲久久一区二区| 欧美日韩三级| 午夜精品久久久久久99热软件 | 精品999网站| 免费观看一区| 亚洲免费成人av| 国产精品老女人精品视频| 欧美一区二区久久久| 欲香欲色天天天综合和网| 美女啪啪无遮挡免费久久网站| 亚洲国内在线| 国产精品一区二区三区成人| 久久久久久久久久码影片| 亚洲狠狠婷婷| 国产一区91精品张津瑜| 欧美高清视频一区二区三区在线观看| 91久久国产综合久久91精品网站| 久久综合伊人77777麻豆| 国内精品久久久久影院色| 久久成人精品无人区| 日韩西西人体444www| 韩国在线一区| 欧美高清视频免费观看| 亚洲美女精品久久| 狠狠色丁香婷婷综合| 国产精品久久久久久久久久三级 | 欧美成人四级电影| 亚洲香蕉网站| 亚洲先锋成人| 妖精成人www高清在线观看| 亚洲国产精品精华液2区45| 国产精品乱码一区二三区小蝌蚪| 欧美一区二区三区免费视| 亚洲免费在线电影| 一区二区三区久久| 中日韩美女免费视频网址在线观看| 在线日韩电影| 一本久道久久综合婷婷鲸鱼| 亚洲啪啪91| 亚洲在线免费观看| 欧美一区二区三区在线免费观看 | 免费精品99久久国产综合精品| 久久久久久成人| 欧美风情在线观看| 欧美日韩成人综合| 国产精品一区二区在线观看不卡| 国产精品综合|