Instalación
npm install wu-frameworkEsa es toda la instalación. Wu tiene cero dependencias en tiempo de ejecución: no arrastra nada de forma transitiva y no necesitas ningún framework para usarlo.
Qué obtienes
Sección titulada «Qué obtienes»El paquete incluye tres bundles más un conjunto de exports por subruta.
| Entrada | Formato | Tamaño | Usado por |
|---|---|---|---|
wu-framework |
ESM | ~120 KB | Bundlers, <script type="module"> |
wu-framework (require) |
CJS | ~120 KB | Node, cadenas de herramientas antiguas |
dist/wu-framework.umd.js |
UMD | ~240 KB | Una etiqueta <script> normal, sin build |
El build UMD es más grande porque no puede cargar chunks de forma asíncrona: todo lo que en el build ESM es un chunk perezoso aquí va incrustado.
Algunos subsistemas no están en las cifras anteriores porque se cargan bajo demanda:
| Chunk | Se carga cuando | Tamaño |
|---|---|---|
| Capa de IA | primer acceso a wu.ai.* |
~71 KB |
| Sandbox de iframe | primera app con sandbox: 'strict' o 'eval' |
pequeño |
| Parser de HTML | primera app con sandbox: 'eval' |
pequeño |
| Grabador del timeline | primera llamada a wu.timeline.* |
pequeño |
| Sincronización CRDT del store | primera llamada a wu.store.sync() |
pequeño |
Si solo usas el sandbox module por defecto y nada de IA, pagas el bundle del
core y nada más.
Estilos de importación
Sección titulada «Estilos de importación»Con bundler (Vite, webpack, esbuild, Rollup)
Sección titulada «Con bundler (Vite, webpack, esbuild, Rollup)»import { wu } from 'wu-framework';
await wu.init({ apps: [{ name: 'cart', url: 'http://localhost:5173' }] });También existen exports de funciones con nombre, si los prefieres al singleton:
import { init, mount, unmount, emit, on, provide, consume } from 'wu-framework';Sin paso de build
Sección titulada «Sin paso de build»<script src="https://unpkg.com/wu-framework/dist/wu-framework.umd.js"></script><script> window.wu.init({ apps: [{ name: 'cart', url: '/apps/cart' }] });</script>El build UMD asigna window.wu, que es también lo que buscan las micro-apps
cuando llaman a wu.define().
Adaptadores de framework
Sección titulada «Adaptadores de framework»Cada adaptador tiene su propia subruta, así que solo cargas el que usas:
import { wuReact } from 'wu-framework/adapters/react';import { wuVue } from 'wu-framework/adapters/vue';import { wuSvelte } from 'wu-framework/adapters/svelte';Disponibles: react, vue, angular, svelte, preact, solid, lit,
vanilla, alpine, qwik, stencil, htmx, stimulus. Mira
Resumen de adaptadores.
El adaptador no incluye su framework en el bundle: detecta React (o Vue, …)
desde window o lo importa dinámicamente desde las dependencias de tu propia
app. Tu micro-app instala su framework como siempre.
Renderizado en servidor
Sección titulada «Renderizado en servidor»import { renderApp, renderApps, renderStateScript } from 'wu-framework/server';Se ejecuta en Node a secas: sin vm, sin --experimental-vm-modules. Mira
Resumen de SSR.
Integraciones con meta-frameworks
Sección titulada «Integraciones con meta-frameworks»npm install @wu-framework/astro # Astronpm install @wu-framework/next # Next.jsAmbas son accesibles también a través del paquete principal como
wu-framework/integrations/astro y wu-framework/integrations/next. Mira
Astro y Next.js.
Soporte de navegadores
Sección titulada «Soporte de navegadores»El objetivo de browserslist es defaults, not IE 11, supports es6-module.
En concreto, Wu requiere:
- Módulos ES e
import()dinámico - Shadow DOM (
attachShadow) — el modelo de aislamiento depende de él - Proxy — lo usa el rastreador de efectos secundarios en modo
module
Dos funcionalidades se degradan en lugar de romperse:
- Declarative Shadow DOM (Chrome 111+, Safari 16.4+, Firefox 123+) solo hace
falta para SSR. Los navegadores antiguos pueden usar el
declarativeShadowDomPolyfill()incluido, ymount()materializa por su cuenta cualquier<template shadowrootmode>que quede pendiente. - WebCrypto es lo preferido para generar los tokens de autorización del bus
de eventos. Fuera de un contexto seguro, Wu recurre a
crypto.getRandomValuesantes de llegar siquiera aMath.random().
Si attachShadow lanza un error, Wu crea un sandbox de respaldo: un <div>
normal con isolation: isolate; contain: layout style paint. La app sigue
funcionando, pero la encapsulación de CSS desaparece. Trátalo como un fallo de
tu entorno, no como un modo soportado.
Verificar la instalación
Sección titulada «Verificar la instalación»import { wu } from 'wu-framework';
console.log(wu.version); // '2.7.2'console.log(wu.info()); // resumen de capacidadesUna vez montadas las apps, wu.inspect() devuelve una instantánea de
diagnóstico completa: apps registradas, estado de montaje, modos de sandbox
realmente en uso, capacidades vivas, eventos recientes y el store. Es la forma
más rápida de confirmar que el runtime está conectado como crees.
