Heim > Web-Frontend > H5-Tutorial > Eine kurze Einführung in den Dateiimport in HTML5_HTML5-Tutorial-Fähigkeiten

Eine kurze Einführung in den Dateiimport in HTML5_HTML5-Tutorial-Fähigkeiten

WBOY
Freigeben: 2016-05-16 15:46:41
Original
1532 Leute haben es durchsucht

Vorlagen, Shadow DOM und benutzerdefinierte Elemente machen es einfacher als je zuvor, UI-Komponenten zu erstellen. Aber Ressourcen wie HTML, CSS und JavaScript müssen immer noch einzeln geladen werden, was sehr ineffizient ist.

Das Entfernen doppelter Abhängigkeiten ist ebenfalls nicht einfach. Beispielsweise erfordert das Laden von jQuery UI oder Bootstrap jetzt das Hinzufügen separater Tags für JavaScript, CSS und Webfonts. Wenn Ihre Webkomponente mehrere Abhängigkeiten anwendet, wird die Sache komplizierter.

Mit dem HTML-Import können Sie diese Ressourcen als kombinierte HTML-Datei laden.
Importieren mit HTML

Um eine HTML-Datei zu laden, müssen Sie ein Link-Tag hinzufügen, dessen rel-Attribut import und herf-Attribut der Pfad der HTML-Datei ist. Wenn Sie beispielsweise „component.html“ in „index.html“ laden möchten:

index.html

XML/HTML-CodeInhalt in die Zwischenablage kopieren
  1. <link rel="import" href="component.html" >

Sie können Dateien in HTML importieren (Anmerkung des Übersetzers: In diesem Artikel wird „das importierte HTML“ als „HTML-Importdatei“ und „das ursprüngliche HTML“ als „HTML-Hauptdatei“ übersetzt. Index.html ist beispielsweise HTML Die Hauptdatei (Datei, „component.html“ ist die HTML-Importdatei.) Fügen Sie alle Ressourcen hinzu, einschließlich Skripten, Stylesheets und Schriftarten, genau wie beim Hinzufügen von Ressourcen zu gewöhnlichem HTML.

component.html

XML/HTML-CodeInhalt in die Zwischenablage kopieren
  1. <link rel="stylesheet" href="css/style.css">
  2. <script src="js/ script.js">script>

doctype-, html-, head- und body-Tags werden nicht benötigt. Der HTML-Import lädt das zu importierende Dokument sofort, analysiert die Ressourcen im Dokument und führt gegebenenfalls Skripts aus.
Ausführungsauftrag

Die Art und Weise, wie Browser HTML-Dokumente analysieren, ist linear, was bedeutet, dass die Skripte oben im HTML vor denen unten ausgeführt werden. Darüber hinaus warten Browser normalerweise, bis der JavaScript-Code ausgeführt wird, bevor sie den nachfolgenden Code analysieren.

Um zu verhindern, dass Skripte die Darstellung von HTML behindern, können Sie dem Tag asynchrone oder zurückgestellte Attribute hinzufügen (oder Sie können das Skript-Tag auch unten auf der Seite platzieren). Das Defer-Attribut verzögert die Skriptausführung, bis alle Seiten analysiert wurden. Das async-Attribut ermöglicht dem Browser die asynchrone Ausführung von Skripten, sodass die Darstellung von HTML nicht behindert wird. Wie funktioniert der HTML-Import?

Das Skript in der HTML-Importdatei ist dasselbe wie das Skript, das das Defer-Attribut enthält. Im folgenden Beispiel führt index.html beispielsweise zuerst script1.js und script2.js und dann script3.js aus.

index.html

XML/HTML-CodeInhalt in die Zwischenablage kopieren
  1. <link rel="import"  href="component.html"> // 1.   
  2. <Titel>ImportbeispielTitel>  
  3. <script src="script3. js">script>        // 4.  

component.html
 

XML/HTML-Code复制内容到剪贴板
  1. <script src="js/script1.js ">Skript>     // 2.   
  2. <script src="js/ script2.js">script>     // 3.  

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

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

3. Klicken Sie auf „script1.js“ und „component.html“ und dann auf „script2.js“

4. Erstellen Sie script2.js und index.html und script3.js

注意,如果给link[rel="import"]添加async属性,HTML导入会把它当做含有async属性的脚本来对待.它不会等待HTML导入文件的执行和加载,这意味着HTML 导入不会妨碍HTML文件的渲染件的执行.
跨域导入

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

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

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

当在HTML导入文件中使用JavaScript时,有一点要提防的是,HTML导入文件中的document对象实际上指的是HTML主文件中的document对象.以前面的代码为例,index.html Verwenden Sie „component.html“ und „document“.

index.html

 

XML/HTML-Code复制内容到剪贴板
  1. var link = document.querySelector('link[rel ="importieren"]'); link.addEventListener('load', function(e) {
  2. var
  3. importedDoc = link.import; // importDoc zeigt auf das Dokument unter „component.html“
  4. });
  5. Um das Dokumentobjekt in Component.html abzurufen, verwenden Sie document.currentScript.ownerDocument.
component.html


XML/HTML-Code

Inhalt in die Zwischenablage kopieren
var
    mainDoc
  1. = document.currentScript.ownerDocument; > // mainDoc zeigt auf das Dokument unter Component.html
  2. Wenn Sie webcomponents.js verwenden, verwenden Sie document._currentScript anstelle von document.currentScript. Unterstriche werden zum Auffüllen des currentScript-Attributs verwendet, da nicht alle Browser dieses Attribut unterstützen.
  3. component.html

XML/HTML-Code

Inhalt in die Zwischenablage kopieren


var mainDoc
=
  1. document._currentScript.ownerDocument; > // mainDoc zeigt auf das Dokument unter Component.html Durch das Hinzufügen des folgenden Codes am Anfang des Skripts können Sie problemlos auf das Dokumentobjekt in „component.html“ zugreifen, unabhängig davon, ob der Browser den HTML-Import unterstützt. document._currentScript = document._currentScript || document.currentScript;
  2. Leistungsüberlegungen
  3. Ein Vorteil des HTML-Imports besteht darin, Ressourcen zu organisieren, aber es bedeutet auch, dass beim Laden dieser Ressourcen der Header aufgrund der Verwendung einiger zusätzlicher HTML-Dateien zu groß wird. Dabei sind einige Punkte zu beachten: Abhängigkeiten auflösen
Was passiert, wenn die Haupt-HTML-Datei von mehreren Importdateien abhängt und die Importdateien dieselbe Bibliothek enthalten? Wenn Sie beispielsweise jQuery aus einer Importdatei laden möchten und jede Importdatei ein Skript-Tag enthält, das jQuery lädt, wird jQuery zweimal geladen und zweimal ausgeführt.
index.html




XML/HTML-Code

Inhalt in die Zwischenablage kopieren



<
link
rel
    =
  1. "import" href="component1.html"> <link rel
  2. ="import" href="component2.html"> component1.html XML/HTML-CodeInhalt in die Zwischenablage kopieren
  1. <script src="js/jquery.js ">Skript> 

component2.html

Der HTML-Import löst dieses Problem automatisch für Sie.

Im Gegensatz zum doppelten Laden von Skript-Tags lädt der HTML-Import nicht mehr die bereits geladene HTML-Datei und führt sie aus. Nehmen wir den vorherigen Code als Beispiel: Durch das Packen des Skript-Tags, das jQuery lädt, in eine HTML-Importdatei wird jQuery nur einmal geladen und ausgeführt.

Aber es gibt ein Problem: Wir haben eine Datei zum Laden hinzugefügt. Wie gehe ich mit der steigenden Anzahl an Dateien um? Glücklicherweise haben wir ein Tool namens Vulkanisieren, um dieses Problem zu lösen.
Netzwerkanfragen zusammenführen

Vulcanize kann mehrere HTML-Dateien in einer Datei zusammenführen und so die Anzahl der Netzwerkverbindungen reduzieren. Sie können es mit npm installieren und über die Befehlszeile verwenden. Möglicherweise verwenden Sie auch Grunzen und Schlucken, um einige Aufgaben zu hosten. In diesem Fall können Sie sie als Teil des Build-Prozesses vulkanisieren.

Um Abhängigkeiten aufzulösen und die Importdateien in index.html zusammenzuführen, verwenden Sie den folgenden Befehl:


Code kopieren
Der Code lautet wie folgt:
$ vulcanize -o vulcanized.html index.html

Durch die Ausführung dieses Befehls werden die Abhängigkeiten in index.html analysiert und eine zusammengeführte HTML-Datei namens vulcanized.html generiert. Weitere Informationen zum Thema Vulkanisieren finden Sie hier.

Hinweis: Die Server-Push-Funktion von http2 wird für die künftige Eliminierung der Dateiverknüpfung und -zusammenführung in Betracht gezogen.
Kombinieren Sie Vorlage, Shadow DOM, benutzerdefinierte Elemente und HTML-Import

Lassen Sie uns den HTML-Import für den Code dieser Artikelserie verwenden. Möglicherweise haben Sie diese Artikel noch nie gesehen. Lassen Sie mich sie daher zunächst erklären: Mit einer Vorlage können Sie den Inhalt Ihrer benutzerdefinierten Elemente deklarativ definieren. Mit Shadow DOM können der Stil, die ID und die Klasse eines Elements nur auf sich selbst angewendet werden. Mit benutzerdefinierten Elementen können Sie HTML-Tags anpassen. Durch die Kombination mit HTML-Importen werden Ihre benutzerdefinierten Webkomponenten modular und wiederverwendbar. Jeder kann es verwenden, indem er ein Link-Tag hinzufügt.

x-component.html


XML/HTML-CodeInhalt in die Zwischenablage kopieren
  1. <template id="template" >  
  2.   <Stil>  
  3.     ...   
  4.   Stil>  
  5.   <div id="container" >  
  6.     <img src="http: //webcomponents.org/img/logo.svg">  
  7.     <Inhalt select="h1" >Inhalt>  
  8.   div>  
  9. Vorlage>  
  10. <Skript>  
  11.   // Dieses Element wird in index.html registriert 
  12.   // Weil „Dokument“ hier das in index.html bedeutet   
  13.   var XComponent = document.registerElement('x-component', {   
  14.     Prototyp: Object.create(HTMLElement.prototype, {   
  15.       createdCallback: {   
  16.         value: function() {   
  17.           var root = this.createShadowRoot();   
  18.           var template = document.querySelector('#template');   
  19.           var clone = document.importNode(template.content, true);   
  20.           root.appendChild(clone);   
  21.         }   
  22.       }   
  23.     })   
  24.   });   
  25. Skript>  

index.html
 

XML/HTML-Code复制内容到剪贴板
  1. ...
  2. <link rel="import" href="x-component.html">
  3. Kopf>
  4. <Körper>
  5. <x-Komponente>
  6.  <h1>Dies ist ein benutzerdefiniertes Elementh1>
  7. x-Komponente>
  8. ...

Beachten Sie, dass Sie keinen komplizierten Code schreiben müssen, da das Dokumentobjekt in x-component.html mit index.html identisch ist. Es wird automatisch für Sie registriert.
Unterstützte Browser

Chrome und Opera bieten Unterstützung für den HTML-Import, und Firefox wird dies erst im Dezember 2014 unterstützen (Mozilla gab an, dass Firefox nicht plant, in naher Zukunft Unterstützung für den HTML-Import bereitzustellen, und behauptete, dass es zunächst verstehen müsse, wie ES6-Module funktionieren umgesetzt werden).

Sie können zu chromestatus.com oder caniuse.com gehen, um zu überprüfen, ob der Browser den HTML-Import unterstützt. Wenn Sie den HTML-Import in anderen Browsern verwenden möchten, können Sie webcomponents.js (ehemals platform.js) verwenden.
Verwandte Ressourcen

Das ist alles für den HTML-Import. Wenn Sie mehr über den HTML-Import erfahren möchten, gehen Sie bitte zu:

HTML-Importe: #include für das Web – HTML5Rocks
HTML-Importspezifikationen

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage