suchen
HeimWeb-FrontendCSS-TutorialErstellen benutzerdefinierter Webkomponenten mit X-Tag

Building Custom Web Components with X-Tag

Erstellen benutzerdefinierter Webkomponenten mit X-Tag

Key Takeaways

  • x-Tag, eine von Microsoft unterstützte JavaScript-Bibliothek, bietet eine kompakte, featurereiche Schnittstelle für die Entwicklung der schnellen Webkomponenten, die sich hauptsächlich auf die benutzerdefinierte Elemente-API konzentriert.
  • x-Tag war ursprünglich ein Mozilla-Projekt, aber jetzt ist es ein von Microsoft unterstütztes Projekt, ähnlich wie Google das Polymer-Framework unterstützt.
  • Erstellen eines benutzerdefinierten Elements mit X-Tag ist vollständig javaScript-gesteuert, wobei die Methode von Xtag.register () verwendet wird. Dieser Prozess beinhaltet die Definition des Lebenszyklus, Zubehörs, Methoden und Ereignisse des benutzerdefinierten Elements.
  • x-Tag bietet eine einfachere API für die Implementierung benutzerdefinierter Elemente im Vergleich zu Polymer, was es zu einer geeigneten Wahl für Entwickler macht, die ihr Setup-Licht und flexibel halten möchten. Es bietet jedoch nicht die komplexen Merkmale, die Polymer tut.

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.

Wie unterscheidet sich X-Tag von Polymer?

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.

Ist X-Tag, ein Mozilla-Projekt nicht?

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.

Erste Schritte mit X-Tag

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> latitude<span>="40.7553231"</span> longitude<span>="-73.9752458"</span>></google-map></span><span><span></span>></span></span></span>

Das benutzerdefinierte Element verfügt über zwei Attribute, Breitengrad und Längengrad, um die Koordinaten eines Ortes anzugeben. Da diese Attribute optional sind, werden wir für jeden von ihnen auch Standardwerte zuweisen, falls der Entwickler sie im Markup nicht definiert.

Beginnen wir zunächst die X-Tag-JavaScript-Bibliothek in das unseres Dokuments.

<span><span>
</span><span><span><span>></span>
</span>  <span><span><span>></span>
</span>    <span><!-- X-Tag library including the polyfill -->
</span>    <span><span><span><script> src<span >="https://rawgit.com/x-tag/core/master/dist/x-tag-core.min.js"</script></span>></span><span><span></span>></span>
</span>  <span><span><span></span>></span>
</span>  <span><span><span>></span>
</span>    <span><!-- Custom element markup will appear here -->
</span>    
    <span><span><span><script>></script></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></span>></span>
</span>  <span><span><span></span>></span>
</span><span><span><span></span>></span></span></span></span></span></span></span>

Es ist wichtig, die X-Tag-Bibliothek in den 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

verwenden werden.

Definieren des benutzerdefinierten Elements

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>
  • Register () - Dies ist die wichtigste Methode in der Bibliothek. Es akzeptiert den Namen des benutzerdefinierten Elements als erstes Argument, gefolgt von der Objektdefinition. Wie der Name schon sagt, ist dies für die Registrierung des benutzerdefinierten Elements im DOM verantwortlich.
  • Inhalt - Das benutzerdefinierte Element benötigt möglicherweise ein zusätzliches Markup für die Struktur oder Präsentation. Dies akzeptiert eine HTML -Zeichenfolge oder eine Multiline -Kommentarzeichenfolge, um das Markup in die DOM zu injizieren.
  • Lebenszyklus - Dies enthält nützliche Rückrufmethoden, die auf unterschiedliche Stufen im Lebenszyklus des benutzerdefinierten Elements abzielen.
  • Accessors - Dies bietet eine gemeinsame Schnittstelle für Objektattribute, Setter und Gettter und verknüpft sie mit den entsprechenden HTML -Attributen. Wenn Attribute mit einem Getter/Setter verknüpft sind, bleiben ihre Zustände immer synchronisiert.
  • Methoden - Das benutzerdefinierte Element benötigt wahrscheinlich einige eigene, einzigartige Methoden, um die gewünschte Funktionalität bereitzustellen. Fügen Sie einfach ein Methodenobjekt zum obersten Ebenen-Xtag.register () Definitionsobjekt hinzu und fügen Sie alle benutzerdefinierten Methoden darin hinzu.
  • Ereignisse - Dies ist für das Anbringen von Ereignissen an das benutzerdefinierte Element verantwortlich. Die Schlüssel dieses Objekts sind die Namen der Ereignisse, die Sie mit dem benutzerdefinierten Element wie Tippen, Fokus usw. anhängen möchten.

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>></api_key></span>&location=<span><span><latitude>></latitude></span>,<span><span><longitude>></longitude></span></span></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> latitude<span>="40.7553231"</span> longitude<span>="-73.9752458"</span>></google-map></span><span><span></span>></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>
</span><span><span><span>></span>
</span>  <span><span><span>></span>
</span>    <span><!-- X-Tag library including the polyfill -->
</span>    <span><span><span><script> src<span >="https://rawgit.com/x-tag/core/master/dist/x-tag-core.min.js"</script></span>></span><span><span></span>></span>
</span>  <span><span><span></span>></span>
</span>  <span><span><span>></span>
</span>    <span><!-- Custom element markup will appear here -->
</span>    
    <span><span><span><script>></script></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></span>></span>
</span>  <span><span><span></span>></span>
</span><span><span><span></span>></span></span></span></span></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>

Beendigung von Schliffen

anwenden

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 benutzerdefinierten Element einen Box-Shadow und einen Grenzradius hinzufügen.

https://www.google.com/maps/embed/v1/streetview?key=<span><span><span><api_key>></api_key></span>&location=<span><span><latitude>></latitude></span>,<span><span><longitude>></longitude></span></span></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>;
</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 benutzerdefiniertes Element von sitepoint (@sinepoint) auf CodePen.

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 Gedanken

im Vergleich zu Polymer bietet X-Tag eine viel einfachere API, um benutzerdefinierte Elemente zu verstehen und zu implementieren, hauptsächlich aufgrund des Fehlens komplexer Merkmale, die Polymer hat. Wenn Sie beabsichtigen, Ihr Setup leicht und flexibel zu halten und für die anderen Webkomponenten-APIs keinen guten Anwendungsfall zu haben, scheint X-Tag sicherlich der richtige Kandidat für den Job zu sein.

häufig gestellte Fragen (FAQs) zum Erstellen benutzerdefinierter Webkomponenten mit X-Tag

Was ist X-Tag und warum ist es für die Webentwicklung wichtig? Es ist Teil der Webkomponenten -Suite von Technologien, die auch Shadow DOM, HTML -Vorlagen und benutzerdefinierte Elemente enthält. X-Tag ist wichtig in der Webentwicklung, da Entwickler ihre eigenen HTML-Elemente erstellen, ihren Code zusammenfassen und ihre Codebasis sauber und warten lassen können. Es fördert auch die Wiederverwendung von Code, was den Entwicklungsprozess erheblich beschleunigen kann. verwenden. Im Gegensatz zu anderen Bibliotheken erfordert X-Tag keine Build-Schritte oder Transpilation und hat einen sehr kleinen Fußabdruck. Es hat auch eine einfache, intuitive API, die es einfach macht, benutzerdefinierte Elemente und ihr Verhalten zu definieren. Darüber hinaus ist X-Tag mit allen modernen Browsern kompatibel und kann neben anderen Bibliotheken und Frameworks verwendet werden.

Kann ich X-Tag mit anderen JavaScript-Bibliotheken oder Frameworks verwenden? Es wird keine Einschränkungen oder spezifische architektonische Muster auferlegt, sodass Sie sie problemlos in Ihre vorhandenen Projekte integrieren können. Unabhängig davon, ob Sie Jquery, React, Angular oder Vue.js verwenden, können Sie X-Tag verwenden, um benutzerdefinierte Elemente zu erstellen, die in Ihrer Anwendung wiederverwendet werden können.

Wie definiere ich ein benutzerdefiniertes Element mit X- Tag?

Das Definieren eines benutzerdefinierten Elements mit X-Tag ist einfach. Sie rufen einfach die Funktion von Xtag.register auf und geben den Namen Ihres benutzerdefinierten Elements und eines Objekts ein, das sein Verhalten definiert. Dieses Objekt kann Lebenszyklusmethoden, Accessors und Event -Handler umfassen. Hier ist ein grundlegendes Beispiel:

xtag.register ('my-Element', {
Lebenszyklus: {
erstellt: function () {
this.textContent = 'Hallo, Welt!' ;
}
}
});

Was sind Lebenszyklusmethoden in X-Tag?

Lebenszyklusmethoden sind spezielle Methoden, die in verschiedenen Phasen des Lebens eines benutzerdefinierten Elements aufgerufen werden. X-Tag unterstützt vier Lebenszyklusmethoden: Erstellt, eingefügt, entfernt und Attributechange. Mit diesen Methoden können Sie spezifische Aktionen ausführen, wenn ein Element erstellt wird, dem DOM hinzugefügt, aus dem DOM entfernt oder wenn sich eines seiner Attribute ändert. >

x-Tag bietet eine einfache Möglichkeit, Ereignisse in Ihren benutzerdefinierten Elementen zu verarbeiten. Sie können Ereignishandler im Ereignisobjekt definieren, wenn Sie Ihr Element registrieren. Zum Beispiel, um ein Klickereignis zu verarbeiten, würden Sie so etwas tun:

xtag.register ('my-Element', {

Ereignisse: {

klick: function (e) {

console.log ('Element geklickt!');

}
}
}); 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

Ist X-Tag immer noch gepflegt und unterstützt? Die letzte Veröffentlichung war 2017. Die Bibliothek ist jedoch stabil und kann weiterhin in Projekten verwendet werden. Wenn Sie auf Probleme stoßen oder neue Funktionen benötigen, müssen Sie sie möglicherweise selbst implementieren oder in Betracht ziehen, eine andere Bibliothek zu verwenden.

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!

Stellungnahme
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
Entmystifizierende Bildschirmleser: Zugrunde Formen und Best PracticesEntmystifizierende Bildschirmleser: Zugrunde Formen und Best PracticesMar 08, 2025 am 09:45 AM

Dies ist der 3. Beitrag in einer kleinen Serie, die wir in Form von Barrierefreiheit gemacht haben. Wenn Sie den zweiten Beitrag verpasst haben, lesen Sie "Verwalten des Benutzerfokus mit: Fokus-Sichtbar". In

Hinzufügen von Kastenschatten zu WordPress -Blöcken und -ElementenHinzufügen von Kastenschatten zu WordPress -Blöcken und -ElementenMar 09, 2025 pm 12:53 PM

Die CSS-Box-Shadow- und Umrisseigenschaften haben Thema gewonnen. JSON-Unterstützung in WordPress 6.1. Sei ein paar Beispiele für die Funktionsweise in realen Themen und welche Optionen wir diese Stile auf WordPress -Blöcke und Elemente anwenden müssen.

Arbeiten mit GraphQL CachingArbeiten mit GraphQL CachingMar 19, 2025 am 09:36 AM

Wenn Sie kürzlich mit GraphQL gearbeitet oder seine Vor- und Nachteile überprüft haben, haben Sie zweifellos Dinge wie "GraphQL nicht unterstützen Caching" oder gehört

Machen Sie Ihren ersten Seltsamen -Sufle -ÜbergangMachen Sie Ihren ersten Seltsamen -Sufle -ÜbergangMar 15, 2025 am 11:08 AM

Die Sufelte Transition -API bietet eine Möglichkeit, Komponenten zu beleben, wenn sie das Dokument eingeben oder verlassen, einschließlich benutzerdefinierter Svelte -Übergänge.

Edle und coole CSS -Scrollbars: Ein SchaufensterEdle und coole CSS -Scrollbars: Ein SchaufensterMar 10, 2025 am 11:37 AM

In diesem Artikel werden wir in die Welt der Scrollbars eintauchen. Ich weiß, es klingt nicht zu glamourös, aber vertrau mir, eine gut gestaltete Seite geht Hand in Hand

Show, Don ' TellShow, Don ' TellMar 16, 2025 am 11:49 AM

Wie viel Zeit damit, die Inhaltspräsentation für Ihre Websites zu entwerfen? Wenn Sie einen neuen Blog -Beitrag schreiben oder eine neue Seite erstellen, denken Sie darüber nach

Aufbau einer Ethereum -App mit Redwood.js und FaunaAufbau einer Ethereum -App mit Redwood.js und FaunaMar 28, 2025 am 09:18 AM

Mit dem jüngsten Aufstieg von Bitcoins Preis über 20.000 USD und kürzlich von 30.000, dachte ich, es lohnt

Was zum Teufel haben NPM -Befehle?Was zum Teufel haben NPM -Befehle?Mar 15, 2025 am 11:36 AM

NPM-Befehle führen verschiedene Aufgaben für Sie aus, entweder als einmalige oder als kontinuierlich ausgeführter Vorgang für Dinge wie das Starten eines Servers oder das Kompilieren von Code.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools