Inicio › Empezar
Inicio rápido
Instala AngeLite, escribe tu primer componente y elige cómo enviarlo: un solo script, o precompilado para pesar lo mínimo.
Qué es AngeLite#
Es un framework de interfaces de usuario hecho de tres ideas:
- Señales (
signal,computed,effect): el estado vive en valores reactivos; cuando uno cambia, solo se actualiza lo que depende de él. No hay detección de cambios global ni Zone.js. - Plantillas al estilo de Angular: HTML con
{{ }},[prop],(evento),@ify@for. Las plantillas se compilan una vez a una lista de instrucciones; no hay DOM virtual. - Módulos opcionales: el núcleo es pequeño y todo lo demás (router, formularios, HTTP, i18n, animaciones, SSR) se importa solo si lo usas.
Instalación#
Hay dos caminos. El más rápido no necesita ninguna herramienta: un <script>.
Con un script (sin build)#
Incluye el bundle y escribe tu app. Las plantillas se compilan en el navegador al arrancar (unos 10 KB gzip en total, módulos opcionales incluidos en el bundle completo).
<div id="app"></div>
<script src="https://duvanjamid.github.io/angelite-docs/angelite.min.js"></script>
<script>
const { signal, component, mount } = AngeLite;
class Hello {
name = signal('mundo');
}
component(Hello, {
template: `<input [(ngModel)]="name"> <p>Hola, {{ name() }}</p>`
});
mount(Hello, document.getElementById('app'));
</script>Descarga el bundle y sírvelo tú, o instala el paquete. Esa URL siempre apunta a la versión de esta documentación.
Con npm y un bundler#
npm install github:duvanjamid/angeliteimport { signal, component, mount } from '@duvanjamid/angelite';Con un bundler (esbuild, Vite, Rollup) cada módulo que no importes desaparece del resultado. Para pesar lo mínimo, precompila las plantillas: la app envía solo el runtime (unos 6 KB), sin el compilador.
Tu primer componente#
Un componente es una clase de JavaScript más component(Clase, { selector, template }). Los campos de la clase están disponibles en la plantilla; las señales se leen llamándolas (count()) y se escriben con set o update.
Ver el código
const { signal, computed, component, mount } = AngeLite;
class Counter {
count = signal(1);
double = computed(() => this.count() * 2);
add(n) { this.count.update(v => v + n); }
}
component(Counter, {
template: `
<button (click)="add(-1)">−</button>
<b>{{ count() }}</b>
<button (click)="add(1)">+</button>
<span> × 2 = {{ double() }}</span>`
});
mount(Counter, root);Cuando pulsas +, count cambia y AngeLite vuelve a evaluar solo las expresiones de la plantilla que la leen, y escribe en el DOM únicamente lo que cambió de valor.
Cómo enviarlo#
| Un script | Precompilado | |
|---|---|---|
| Herramientas | ninguna | esbuild, Vite o el CLI de tools/aot.mjs |
| Peso (gzip) | ~10 KB con compilador | ~6 KB, solo el runtime |
| Arranque | compila las plantillas al cargar | las plantillas ya son JS |
| CSP estricta | funciona (no usa eval) | funciona |
| Plantillas con datos de usuario | nunca | imposible por construcción |
Lo habitual es empezar con el script y pasar a precompilar cuando la app crece. El código de los componentes no cambia.