Componentes reactivos, funcionales y auditables para general.JS
Arquitectura moderna, reactividad profunda y comunicación entre componentes sin dependencias externas
reactv.general.js es un plugin avanzado para general.JS que permite crear interfaces reactivas con componentes funcionales o de clase, gestionando estado, efectos, estilos y eventos de forma modular y extensible.
Diseñado para desarrolladores que buscan control total sobre el DOM, el estado y la trazabilidad de sus componentes, sin depender de frameworks pesados.
🔧 Funcionalidad | ✅ Descripción |
---|---|
🔁 Reactividad profunda | Proxy recursivo para detectar cambios en objetos anidados |
⚛️ Hooks funcionales | useState , useEffect , useMemo para lógica declarativa |
🎯 Render condicional | Evita renders innecesarios comparando estado y props |
⚡️ Virtual DOM integrado | Renderiza con h , diff , patch y renderVNode para eficiencia y trazabilidad |
📡 Event Bus | Comunicación entre componentes con emit y on |
🎨 Scoped styles | Estilos encapsulados por componente |
🧩 Fragmentos DOM | Renderiza múltiples nodos sin contenedores artificiales |
🧠 Context API | Comparte datos entre componentes sin prop drilling |
🧪 Lifecycle hooks | onMount , onUpdate , onDestroy para componentes de clase |
💾 Persistencia | Guarda y recupera estado desde localStorage |
🧱 Componentes funcionales | Define UI reactiva sin clases |
🛠️ Devtools integrados | Inspecciona estado, eventos y componentes activos |
🧬 Plugin system | Extiende la librería con plugins personalizados |
⏳ Suspense con fallback | Carga diferida de componentes con render provisional |
🧪 Snapshot de estado | Captura el estado actual para pruebas o restauración |
🧪 Modo de prueba | Simula eventos y renders sin afectar el DOM real |
🧩 Aspecto | 🧱 Render tradicional (createElement ) |
⚡️ Virtual DOM (h , diff , patch ) |
---|---|---|
🔁 Actualización | Reemplaza todo el DOM | Solo aplica cambios necesarios |
🧠 Trazabilidad | No conserva estructura virtual | Compara VNodes y genera diffs |
🎯 Eficiencia | Re-render completo | Patch granular por nodo |
📦 Composición | Manual con appendChild |
Declarativa con h() |
🔍 Comparación de estado | Manual o por JSON.stringify |
Automática por diff() |
🧬 Extensibilidad | Limitada a DOM directo | Compatible con slots, plugins, etc. |
🛠️ Integración con JSX | Parcial (jsx ) |
Total (jsx → h() → VNode) |
✅ Ventaja | 📘 Descripción |
---|---|
Modularidad total | Cada submódulo (genrl , reactive , routing ) cumple una función clara y extensible. |
Encadenamiento fluido | .run().setScope().extend().log() permite construir lógicas limpias y legibles. |
JSX + Virtual DOM | Reactive.General.js permite componentes compilados con reactividad granular. |
Rutas activas declarativas | Routing.General.js permite navegación sin frameworks pesados. |
Seguridad integrada | Submódulos como cripto , safeEval , sanitize , validate protegen el sistema. |
Ideal para entornos pedagógicos | Fichas, sliders, rutas y componentes se integran con modelos reactivos. |
✅ Ventaja clave | 📘 Descripción |
---|---|
JSX + Virtual DOM | Usa JSX compilado y Virtual DOM para rendimiento óptimo sin sacrificar claridad. |
Integración modular | Se integra con genrl y routing.general.js , permitiendo rutas, animaciones y seguridad desde el núcleo. |
Encadenamiento fluido | Compatible con .run().setScope().bind() y otros métodos encadenables de genrl . |
Componentes compilables | Cada componente puede compilarse con Webpack, permitiendo optimización y encapsulamiento. |
Reactividad declarativa | Los modelos reactivos actualizan el DOM automáticamente, sin necesidad de hooks ni proxies externos. |
Control técnico total | Permite definir, extender y observar propiedades con precisión, ideal para entornos educativos y técnicos. |
Compatibilidad con fichas y sliders | Diseñado para integrarse con fichas pedagógicas, sliders interactivos y rutas activas. |
Seguridad integrada | Compatible con submódulos como cripto , safeEval , sanitize , y validate . |
Separación clara de responsabilidades | Componentes, rutas, animaciones y modelos están organizados en submódulos independientes. |
Reactive.General.js se posiciona como una solución moderna y modular que combina JSX, Virtual DOM y bundlers, pero con una arquitectura más clara, extensible y orientada a proyectos técnicos, educativos y editoriales.
🆚 Framework | 💡 Diferencias clave | 🌟 Ventaja de Reactive.General.js |
---|---|---|
React | Requiere hooks, contextos y toolchains pesados | Mayor control técnico, integración modular con rutas, animaciones y seguridad |
Vue | Sintaxis declarativa, DSLs, dependencia de Vite o Webpack | Separación clara entre componentes, rutas y modelos reactivos |
SolidJS | JSX compilado, reactividad granular, sin virtual DOM | Submódulos integrados (cripto , animate , bind , routing ) y mayor extensibilidad |
Lit | Web Components con encapsulamiento, JSX opcional | Cobertura funcional más amplia: rutas activas, modelos reactivos, animaciones y seguridad |
Reactive.General.js destaca por su capacidad de integrarse con genrl
y routing.general.js
, permitiendo construir sistemas completos con fichas, sliders, rutas activas y componentes compilados — todo dentro de una arquitectura modular y encadenable.
Todas las modificaciones importantes documentadas por versión.
- Integración completa del sistema Virtual DOM:
h()
para crear VNodesdiff()
para comparar VNodespatch()
para aplicar actualizaciones al DOM realrenderVNode()
para convertir VNode en elementos reales
- Modificación de
Componente.render()
para usar Virtual DOM - Exposición pública de
h
,diff
,patch
,renderVNode
como parte del API - Compatibilidad con JSX vía
reactv.jsx
- Renderizado eficiente sin reemplazo completo del DOM
- Trazabilidad de cambios entre estados virtuales
- Preparación para slots, transitions y plugins visuales
- Clase
reactv
autoejecutable con API modular - Sistema de eventos (
emit
,on
) - Context API (
createContext
,useContext
) - Plugin registry (
usePlugin
) - Hooks:
useState
,useEffect
,useMemo
- JSX support:
jsx()
,createElement()
,createFragment()
- Scoped styles:
applyScopedStyle()
- Componentes funcionales:
defineFunctional()
- Clase
Componente
consetState
,template
,render
,onMount
,onUpdate
- Reactive store con
Subject
,Observer
,createReactiveState
- Persistencia:
saveState
,loadState
,snapshotState
- Suspense:
suspense(loaderFn, { fallback })
- Devtools:
debug()
- Test mode toggle:
testMode.enable()
,testMode.disable()
http://cdn.underdevelopment.work/generaljs/reactive.general.min.js
class Contador extends reactv.Componente {
template(state) {
return reactv.createElement("button", {
onclick: () => this.setState({ count: state.count + 1 })
}, `Contador: ${state.count}`);
}
onMount() {
this.setState({ count: 0 });
}
}
class Contador extends reactv.Componente {
template(state) {
return reactv.h("button", {
onclick: () => this.setState({ count: state.count + 1 })
}, `Contador: ${state.count}`);
}
onMount() {
this.setState({ count: 0 });
}
}
Este ejemplo muestra cómo crear un contador interactivo usando:
Componente
de clase- Estado reactivo con
setState
- Renderizado con Virtual DOM (
h
) - JSX opcional para mayor legibilidad
class Contador extends reactv.Componente {
template(state) {
return reactv.h("button", {
onclick: () => this.setState({ count: state.count + 1 })
}, `Contador: ${state.count}`);
}
onMount() {
this.setState({ count: 0 });
}
}
// Montaje en el DOM
const container = document.getElementById("app");
const instancia = new Contador({}, container);
/** @jsx reactv.jsx */
class Contador extends reactv.Componente {
template(state) {
return (
<button onClick={() => this.setState({ count: state.count + 1 })}>
Contador: {state.count}
</button>
);
}
onMount() {
this.setState({ count: 0 });
}
}
const container = document.getElementById("app");
new Contador({}, container);
🧩 Elemento | ✅ Descripción |
---|---|
Componente |
Clase base con ciclo de vida (onMount , render , onUpdate ) |
setState() |
Actualiza el estado interno y dispara render si hay cambios |
template() |
Devuelve un VNode usando h() o JSX para representar la UI |
render() |
Aplica diff() y patch() para actualizar el DOM de forma eficiente |
container |
Nodo del DOM donde se monta el componente |
Virtual DOM |
Sistema que compara y actualiza solo los nodos necesarios |
JSX opcional |
Permite escribir la UI de forma declarativa y legible |