Inizia Subito โ
Questa guida ti accompagnerร nella creazione della tua prima estensione KIMU, passo dopo passo.
๐งฉ Struttura di una Estensione โ
Ogni estensione รจ una cartella dentro src/extensions/ con almeno questi file:
extensions/
my-extension/
component.ts # Logica, metadata, controller
view.html # Template UI
style.css # StiliFile Richiesti โ
| File | Descrizione | Obbligatorio |
|---|---|---|
component.ts | Classe principale con metadata e logica | โ |
view.html | Template HTML dell'interfaccia | โ |
style.css | Fogli di stile personalizzati | โ |
๐ Il Tuo Primo "Hello World" โ
Creiamo insieme una semplice estensione per capire i concetti base.
1. Crea la Cartella โ
bash
mkdir src/extensions/hello-world2. Component TypeScript (component.ts) โ
typescript
import { KimuComponent } from '../../core/kimu-component';
import { KimuComponentElement } from '../../core/kimu-component-element';
@KimuComponent({
tag: 'hello-world', // Tag HTML univoco (obbligatorio)
name: 'Hello World', // Nome descrittivo
version: '1.0.0', // Versione semantica
description: 'La mia prima estensione KIMU',
icon: '๐', // Icona emoji
author: 'Il tuo nome', // Autore
path: 'hello-world', // Path della cartella
internal: false // false = visibile agli utenti
})
export class HelloWorld extends KimuComponentElement {
// Metodo principale: espone dati e handler al template
getData() {
return {
message: 'Ciao Mondo da KIMU!',
timestamp: new Date().toLocaleString()
};
}
// Hook del ciclo di vita (opzionale)
onInit(): void {
console.log('Estensione Hello World inizializzata');
}
}3. Template HTML (view.html) โ
html
<div class="hello-container">
<h2>๐ ${message}</h2>
<p>Creato il: ${timestamp}</p>
</div>4. Stili CSS (style.css) โ
css
.hello-container {
padding: 2rem;
text-align: center;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
border-radius: 12px;
box-shadow: 0 4px 20px rgba(0,0,0,0.1);
}
.hello-container h2 {
margin: 0 0 1rem 0;
font-size: 1.5rem;
}๐ฏ Testare l'Estensione โ
- Salva tutti i file nella cartella
src/extensions/hello-world/ - Riavvia il server di sviluppo:bash
npm run dev - Apri l'app e cerca "Hello World" nella lista delle estensioni
- Aggiungi l'estensione al layoutโdovresti vedere il tuo messaggio!
๐ Cosa Succede Sotto? โ
- Registrazione: Il decorator
@KimuComponentregistra automaticamente l'estensione - Compilazione: KIMU compila l'estensione in un Web Component standard
- Rendering: Il metodo
getData()fornisce i dati al templateview.html - Stile: Il CSS viene incapsulato nel Shadow DOM dell'estensione
โจ Prossimi Passi โ
Ora che hai creato la tua prima estensione, puoi:
- Approfondire l'anatomia per capire meglio i componenti
- Scoprire i pattern per diversi tipi di estensioni
- Imparare la comunicazione tra estensioni
- Esplorare template avanzati per UI piรน complesse
๐ Congratulazioni! โ
Hai appena creato la tua prima estensione KIMU! ๐
Il prossimo passo รจ esplorare l'anatomia dettagliata per capire meglio ogni componente.
๐ Inclusione di Estensioni Figlie (Composite Extensions) โ
Se vuoi che la tua estensione "padre" includa e utilizzi altre estensioni come componenti, puoi sfruttare il metadata dependencies nel decorator @KimuComponent.
Come funziona:
- Nel campo
dependenciesinserisci i tag HTML delle estensioni figlie che vuoi includere. - Queste estensioni verranno caricate automaticamente e saranno disponibili nel template HTML come tag custom.
Esempio pratico:
typescript
@KimuComponent({
tag: 'dashboard-parent',
name: 'Dashboard Completa',
version: '1.0.0',
dependencies: ['chart-widget', 'data-table', 'filter-panel'] // Estensioni figlie
})
export class DashboardParent extends KimuComponentElement {
// Logica del componente padre
}Nel template view.html:
html
<div class="dashboard">
<h2>Dashboard Interattiva</h2>
<!-- Utilizzo delle estensioni figlie come tag HTML -->
<chart-widget data="${chartData}"></chart-widget>
<data-table items="${tableItems}"></data-table>
<filter-panel @filter="${onFilter}"></filter-panel>
</div>Vantaggi:
- Modularitร e riutilizzo
- Aggiornamenti separati per ogni modulo
- Caricamento automatico delle dipendenze
Best practice:
- Includi solo le dipendenze effettivamente necessarie
- Documenta sempre il ruolo di ogni estensione figlia
- Usa nomi di tag descrittivi per le dipendenze