Petite bibliothèque pour les composants Web simples.
1kB
import { component , property , Element } from 'nativeweb' ;
@ component ( 'hey-internet' )
class Component extends Element {
@ property ( ) emoji ;
render ( ) {
return `
<h1>Hey Internet ${ this . emoji } </h1>
` ;
}
} < hey-internet emoji ="" > </ hey-internet >npm init nativewebnpm install nativeweb @component
@property
@event
@customEvent
@query
@queryAll
@component Définissez un élément personnalisé et ajoutez des styles. À partir d'un fichier externe ou du même fichier. styles peuvent être un array de styles.
import { component , Element } from 'nativeweb' ;
import styles from './hey-styles.css.js' ;
@ component ( 'some-styles' , styles )
class Component extends Element {
render ( ) {
return `
<h1>Some Styles</h1>
` ;
}
} import { css } from 'nativeweb' ;
export default css `
h1 {
color: orange;
}
` ; < hey-styles > </ hey-styles >@property Obtenez un attribut converti en type spécifié ou définissez une propriété avec une valeur par défaut facultative.
String , Boolean , Number , Array ou Object .
import { component , property , Element } from 'nativeweb' ;
@ component ( 'cool-property' )
class Component extends Element {
@ property ( ) cool = 'Cool Prop' ;
@ property ( String ) title = 'Default Title' ;
@ property ( Number ) multiplier ;
render ( ) {
return `
<h1> ${ this . title } </h1>
<h2> ${ this . cool } ➡️ ${ 2 * this . multiplier } </h2>
` ;
}
} < cool-property title =" Cool Title ? " multiplier =" 3 " > </ cool-property >@event Ajoutez un écouteur d'événements à un composant, un élément enfant nommé @name ou un événement de composant externe.
import { component , event , Element } from 'nativeweb' ;
@ component ( 'easy-event' )
class Component extends Element {
@ event ( ) mouseenter = this . onHover ( ) ;
@ event ( ) click = {
'@title' : this . onClick ( ) ,
'@button' : this . onClick ( )
} ;
@ event ( ) ready = {
'other-component' : this . onReady ( )
} ;
onHover ( ) {
console . log ( 'Hover Component' ) ;
}
onClick ( e ) {
console . log ( e . currentTarget ) ;
}
onReady ( { detail } ) {
console . log ( detail ) ;
}
render ( ) {
return `
<h1 @title>Easy Event</h1>
<button @button>Click Me</button>
` ;
}
} < easy-event > </ easy-event >@customEventCréez un événement global personnalisé, en espace de noms avec le nom du composant. Prêt à être envoyé. L'auditeur est dans le composant ci-dessus.
import { component , customEvent , Element } from 'nativeweb' ;
@ component ( 'other-component' )
class Component extends Element {
@ customEvent ( ) ready = 'Ready ' ;
connected ( ) {
dispatchEvent ( this . ready ) ;
}
render ( ) {
return `
<h1>Other Component</h1>
` ;
}
} < other-component > </ other-component >@query Sélecteur de requête un élément enfant @name .
import { component , query , Element } from 'nativeweb' ;
@ component ( 'simple-query' )
class Component extends Element {
@ query ( ) title ;
connected ( ) {
this . title . innerText = 'Better Title ?' ;
}
render ( ) {
return `
<h1 @title>Good Title</h1>
` ;
}
} < simple-query > </ simple-query >@queryAll Sélecteur de requête Tous @name Éléments enfants.
import { component , queryAll , Element } from 'nativeweb' ;
@ component ( 'all-query' )
class Component extends Element {
@ queryAll ( ) title ;
connected ( ) {
this . title . forEach ( el => ( el . style . color = 'lightgreen' ) ) ;
}
render ( ) {
return `
<h1 @title>One Title</h1>
<h2 @title>Other Title</h2>
` ;
}
} < all-query > </ all-query > render() → Rend le composant.
connected() → Appelé lorsque le composant est inséré dans le DOM.
disconnected() → Appelé lorsque le composant est supprimé du DOM.
adopted() → appelé lorsque le composant est déplacé vers un nouveau document.
attributeChanged() → appelé lorsqu'un attribut observé change.
this.update() → remensionne le composant.
this.properties → Obtenez tous les attributs.
Style partagé
Composition
Conditionnel
Boucle
Élément variable
Incluez les styles globaux dans un composant.
import { css } from 'nativeweb' ;
import global from '../global-style.css.js' ;
export default [
global ,
css `
h1 {
color: orange;
}
`
] ;Composition de composants avec emplacement par défaut et emplacement nommé.
import { component , Element } from 'nativeweb' ;
@ component ( 'slot-example' )
class Component extends Element {
render ( ) {
return `
<header>
<h1><slot name="title"></slot></h1>
<slot></slot>
</header>
` ;
}
} < slot-example >
< span slot =" title " > Named slot </ span >
< p > Default slot </ p >
</ slot-example >Rendu conditionnel dans la vanille JS.
import { component , property , Element } from 'nativeweb' ;
@ component ( 'condition-example' )
class Component extends Element {
@ property ( ) isGood = false ;
render ( ) {
return `
${ this . isGood ? `<h1>Good</h1>` : `` }
` ;
}
}Rendre la boucle à Vanilla JS.
import { component , property , Element } from 'nativeweb' ;
@ component ( 'loop-example' )
class Component extends Element {
@ property ( ) emojis = [ '?' , '?' , '?' ] ;
render ( ) {
return `
${ this . emojis . map ( item => `<span> ${ item } </span>` ) . join ( '' ) }
` ;
}
}Rendez un élément d'une propriété.
import { component , property , Element } from 'nativeweb' ;
@ component ( 'element-example' )
class Component extends Element {
@ property ( ) as = 'p' ;
render ( ) {
return `
< ${ this . as } >Heading 1</ ${ this . as } >
` ;
}
} < element-example as =" h1 " > </ element-example >