Nach den Lösungen von Google und Mozilla für Webkomponenten ist es jetzt an der Reihe von Microsoft, diesen Speicherplatz mit der Veröffentlichung der X-Tag-Bibliothek einzugeben. Die offizielle Website definiert es wie folgt:
x-Tag ist eine von Microsoft unterstützte Open Source, JavaScript-Bibliothek, die die API-Familie der W3C-Standard-Webkomponenten umhüllt, um eine kompakte, featurereiche Schnittstelle für die Entwicklung schneller Komponenten bereitzustellen. Während X-Tag Feature-Hooks für alle Webkomponenten-APIs (benutzerdefinierte Elemente, Schatten-DOM, Vorlagen und HTML-Importe) anbietet, erfordert es nur eine benutzerdefinierte Unterstützung für den Betrieb. In Ermangelung einer nativen Unterstützung für benutzerdefinierte benutzerdefinierte Elemente verwendet X-Tag eine Reihe von Polyfills, die mit dem Polymer-Framework von Google geteilt werden.
Mit anderen Worten, X-Tag ist Microsoft, was Polymer für Google ist. Das einzige, was beides üblich ist, ist die zugrunde liegende Polyfill, die die Unterstützung von Webkomponenten in nicht unterstützenden Browsern ermöglicht.
Polymer kombiniert alle vier Webkomponenten -Technologien, nämlich HTML -Importe, benutzerdefinierte Elemente, Shadow DOM- und HTML -Vorlagen in ein einzelnes Paket. Es bietet dem Entwickler eine benutzerfreundliche API zum Erstellen benutzerdefinierter Webkomponenten. Auf der anderen Seite stellt X-Tag nur die benutzerdefinierte Element-API zum Erstellen benutzerdefinierter Webkomponenten bereit. Natürlich können Sie auch andere Webkomponenten-APIs in Verbindung mit der X-Tag-Bibliothek verwenden.
Ja, aber es ist jetzt nicht mehr. Nach einigem Graben gelang es mir herauszufinden, dass der ursprüngliche Entwickler des X-TAG-Projekts, Daniel Buchner, früher bei Mozilla arbeitete, als er die Bibliothek erstellte. Seitdem ist er nach Microsoft gezogen und hat das Projekt fortgesetzt. Darüber hinaus war er mit Hilfe eines Ex-Mozillianers der einzige Beitrag zur Bibliothek. Daher ist es jetzt ein von einem Ex-Mozillian gegründetes von Microsoft unterstütztes Projekt.
In diesem Artikel werden wir ein benutzerdefiniertes Element mithilfe der X-Tag-Bibliothek erstellen, um eine Google Map Street View mit dem folgenden Markup einzubetten:
<span><span><span><google-map</span> latitude<span>="40.7553231"</span> longitude<span>="-73.9752458"</span>></span><span><span></google-map</span>></span></span>
Das benutzerdefinierte Element
Beginnen wir zunächst die X-Tag-JavaScript-Bibliothek in das
<span><span><!DOCTYPE html></span> </span><span><span><span><html</span>></span> </span> <span><span><span><head</span>></span> </span> <span><!-- X-Tag library including the polyfill --> </span> <span><span><span><script</span> src<span>="https://rawgit.com/x-tag/core/master/dist/x-tag-core.min.js"</span>></span><span><span></script</span>></span> </span> <span><span><span></head</span>></span> </span> <span><span><span><body</span>></span> </span> <span><!-- Custom element markup will appear here --> </span> <span><span><span><script</span>></span><span> </span></span><span><span> <span><!-- The behavior of the custom element will be defined here --> </span></span></span><span><span> </span><span><span></script</span>></span> </span> <span><span><span></body</span>></span> </span><span><span><span></html</span>></span></span>
Es ist wichtig, die X-Tag-Bibliothek in den
verwenden werden.des Dokuments aufzunehmen. Dies ist so, dass es vollständig heruntergeladen und analysiert wird, bevor die Rendering Engine auf das benutzerdefinierte Element -Markup trifft, das wir in der
Im Gegensatz zu Polymer ist der Prozess des Erstellens eines benutzerdefinierten Elements mit X-Tag vollständig javaScript-gesteuert. Die X-Tag-Bibliothek bietet eine Reihe nützlicher Methoden, Rückrufe und Eigenschaften, um benutzerdefiniertes Verhalten für unser Element zu definieren. Ein typisches Skelett zum Erstellen eines benutzerdefinierten Elements mit X-Tag sieht wie folgt aus:
xtag<span>.register('google-map', { </span> <span>content: '', </span> <span>lifecycle: { </span> <span>created : function(){ </span> <span>/* Called when the custom element is created */ </span> <span>}, </span> <span>inserted : function(){ </span> <span>/* Called when the custom element is inserted into the DOM */ </span> <span>}, </span> <span>removed : function(){ </span> <span>/* Called when the custom element is removed from the DOM */ </span> <span>}, </span> <span>attributeChanged: function(attrName<span>, oldValue, newValue</span>){ </span> <span>/* Called when the attribute of the custom element is changed */ </span> <span>} </span> <span>}, </span> <span>accessors : {}, </span> <span>methods : {}, </span> <span>events : {} </span><span>});</span>
Die Grundidee besteht darin, die Google -Karte mit einem IFRame einzubetten und die SRC -URL im folgenden Format anzugeben:
https://www.google.com/maps/embed/v1/streetview?key=<span><span><span><API_KEY</span>></span>&location=<span><span><LATITUDE</span>></span>,<span><span><LONGITUDE</span>></span></span>
Um den API_Key zu erhalten, befolgen Sie die hier beschriebenen Schritte. Sobald Sie den API_Key haben, erstellen wir einen Iframe innerhalb der erstellten Rückrufmethode des Lebenszyklusobjekts und geben die SRC -Eigenschaft im obigen Format an.
<span><span><span><google-map</span> latitude<span>="40.7553231"</span> longitude<span>="-73.9752458"</span>></span><span><span></google-map</span>></span></span>
Der obige Code funktioniert, aber wir müssen die hart codierten Koordinatenwerte im iframe.src loswerden und die Werte stattdessen direkt aus den benutzerdefinierten Elementattributen beziehen. Dazu verwenden wir das Objekt des Accessors, wobei die Attributnamen die Tasten bilden. Wir verknüpfen sie mit den HTML -Attributen, indem wir Attribute deklarieren: {}.
<span><span><!DOCTYPE html></span> </span><span><span><span><html</span>></span> </span> <span><span><span><head</span>></span> </span> <span><!-- X-Tag library including the polyfill --> </span> <span><span><span><script</span> src<span>="https://rawgit.com/x-tag/core/master/dist/x-tag-core.min.js"</span>></span><span><span></script</span>></span> </span> <span><span><span></head</span>></span> </span> <span><span><span><body</span>></span> </span> <span><!-- Custom element markup will appear here --> </span> <span><span><span><script</span>></span><span> </span></span><span><span> <span><!-- The behavior of the custom element will be defined here --> </span></span></span><span><span> </span><span><span></script</span>></span> </span> <span><span><span></body</span>></span> </span><span><span><span></html</span>></span></span>
Wir können diese Variablen dann direkt verwenden, während wir die SRC -URL angeben:
xtag<span>.register('google-map', { </span> <span>content: '', </span> <span>lifecycle: { </span> <span>created : function(){ </span> <span>/* Called when the custom element is created */ </span> <span>}, </span> <span>inserted : function(){ </span> <span>/* Called when the custom element is inserted into the DOM */ </span> <span>}, </span> <span>removed : function(){ </span> <span>/* Called when the custom element is removed from the DOM */ </span> <span>}, </span> <span>attributeChanged: function(attrName<span>, oldValue, newValue</span>){ </span> <span>/* Called when the attribute of the custom element is changed */ </span> <span>} </span> <span>}, </span> <span>accessors : {}, </span> <span>methods : {}, </span> <span>events : {} </span><span>});</span>
Styling Ein benutzerdefiniertes Element ähnelt dem Styling eines anderen HTML -Tags. Klassen, IDs und Attribut -Selektoren funktionieren wie erwartet mit benutzerdefinierten Elementen. Zum Beispiel werden wir unserem neu erstellten
https://www.google.com/maps/embed/v1/streetview?key=<span><span><span><API_KEY</span>></span>&location=<span><span><LATITUDE</span>></span>,<span><span><LONGITUDE</span>></span></span>
Die Verwendung des benutzerdefinierten Elements ist jetzt so einfach wie das folgende Markup in die
: aufzunehmen<span>// Insert your API key here </span><span>var API_KEY = <API_KEY>; </span> xtag<span>.register('google-map', { </span> <span>lifecycle: { </span> <span>created: function() { </span> <span>var iframe = document.createElement('iframe'); </span> iframe<span>.width = 600; </span> iframe<span>.height = 600; </span> iframe<span>.frameBorder = 0; </span> iframe<span>.src = 'https://www.google.com/maps/embed/v1/streetview?key=' + </span> <span>API_KEY + '&location=40.7553231,35.3434'; </span> <span>this.appendChild(iframe); </span> <span>} </span> <span>} </span><span>});</span>
Das Endergebnis ist im folgenden Codepen sichtbar:
Siehe den Stift X-Tag
Obwohl die Browser-Unterstützung für Webkomponenten ein bisschen skizzenhaft ist, sollte unsere Demo, die die X-Tag-Bibliothek mit der Polyfill verwendet, auf allen modernen Browsern wie IE9 und höher funktionieren.
endgültige Gedankenhäufig gestellte Fragen (FAQs) zum Erstellen benutzerdefinierter Webkomponenten mit X-Tag
Wie definiere ich ein benutzerdefiniertes Element mit X- Tag?
xtag.register ('my-Element', {
Lebenszyklus: {
erstellt: function () {
this.textContent = 'Hallo, Welt!' ;
}
}
});
Was sind Lebenszyklusmethoden in X-Tag?
xtag.register ('my-Element', {
Ereignisse: {}
}
}); Elemente?
Ja, X-Tag unterstützt die Erstellung von Schattendom-Elementen. Auf diese Weise können Sie die Stile und Marke Ihres Elements zusammenfassen und sie vom Rest Ihres Dokuments getrennt halten. Um eine Schattenwurzel zu erstellen, können Sie die methode createShadowroot () in der erstellten Lebenszyklusmethode Ihres Elements verwenden.
Wie style ich meine benutzerdefinierten Elemente? Wie alle anderen HTML -Elemente verwenden CSS. Wenn Ihr Element Shadow DOM verwendet, können Sie ein
Das obige ist der detaillierte Inhalt vonErstellen benutzerdefinierter Webkomponenten mit X-Tag. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!