Saltar al contenido
Framework Ecosystems LabsUn contrato, muchos ecosistemas, la misma prueba.

🟨 JavaScript y TypeScript#

⬅️ Atlas · 🗂️ Índice · 🧭 Taxonomía

64 tecnologías, más que las de los otros doce ecosistemas juntos. No es una anomalía: es la consecuencia de una posición única. JavaScript es el único lenguaje que se ejecuta en el navegador de todo el mundo sin instalar nada, y desde 2009 también en el servidor. Esa doble ciudadanía explica casi todo lo que sigue, incluida su fama de renovación agotadora.

Por qué este ecosistema se mueve así#

Condición del lenguaje Consecuencia en sus frameworks
Se ejecuta en un entorno que no controlas (el navegador del usuario) El tamaño del paquete es una restricción de diseño, no una optimización posterior
No se puede romper la web: el lenguaje solo añade, nunca quita La innovación ocurre en bibliotecas, no en el lenguaje; de ahí su número
El navegador no tuvo módulos hasta 2015 Una generación entera de herramientas de construcción existe para tapar ese hueco
Publicar un paquete no cuesta nada ni requiere revisión Enorme variedad y una superficie de cadena de suministro que el módulo 11 obliga a evaluar
El mismo lenguaje en cliente y servidor Es el único ecosistema donde el metaframework tiene sentido pleno

La línea del tiempo, en cuatro saltos#

2005-2009 · Normalizar el navegador. Los navegadores eran incompatibles entre sí de forma grotesca. Prototype, MooTools, Dojo y sobre todo jQuery existieron para que $("#x").hide() funcionara igual en todas partes. jQuery ganó por su ecosistema de complementos, no por ser el más elegante. Buena parte de lo que hoy es API nativa —querySelectorAll, fetch, classList— entró primero como idea suya.

2010-2015 · El estado se muda al navegador. Con aplicaciones cada vez más ricas, manipular el DOM a mano dejó de escalar: la vista y los datos se desincronizaban. Backbone propuso separar modelo y vista; Knockout trajo los observables; AngularJS juntó inyección de dependencias y enlace bidireccional. Y entonces React invirtió el planteamiento: en lugar de sincronizar, volver a describir la interfaz entera en función del estado y dejar que una capa intermedia calcule el mínimo cambio.

2016-2021 · El metaframework. Renderizar solo en el cliente tenía un coste visible: pantallas en blanco, indexación pobre, primeros segundos lentos. Next.js, Nuxt y SvelteKit reunificaron cliente y servidor bajo un mismo enrutado. El precio fue nuevo y poco discutido al principio: acoplamiento a plataformas concretas y el coste de hidratación que el módulo 04 enseña a medir.

2022-2026 · Islas, señales y vuelta del hipermedia. Tres respuestas distintas al mismo exceso. Astro no envía JavaScript salvo donde se declare explícitamente. SolidJS y Svelte 5 recuperan las señales de Knockout con mejor ergonomía. htmx y Turbo devuelven el estado al servidor y usan HTML como formato de respuesta — que es, exactamente, lo que se hacía antes de 2005.

La fatiga, explicada sin queja#

«Cansancio de JavaScript» suele contarse como un defecto moral del ecosistema. Es más sencillo: es lo que ocurre cuando un espacio con muchísimos participantes explora en paralelo un problema mal resuelto. Los otros ecosistemas exploran más despacio porque tienen menos gente, o porque un proveedor único decide la dirección, o porque su lenguaje ya resolvía parte del problema.

La consecuencia práctica para quien elige está en el módulo 11: en este ecosistema más que en ningún otro, la salud del proyecto y la estrategia de salida pesan más que la elegancia de la API.

Frontera que se confunde a diario#

Las 64 tecnologías#

<!-- generado:tabla-ecosistema javascript -->

Tecnología Clasificación Desde Era Estado Licencia Documentación
Backbone.js mv-library 2010 🌱 Pionero 🟡 mantenimiento MIT oficial
Apache Cordova runtime-bridge 2009 🌱 Pionero 🟡 mantenimiento Apache-2.0 oficial
Dojo Toolkit ui-toolkit 2004 🌱 Pionero 🟡 mantenimiento BSD-3-Clause oficial
jQuery dom-library 2006 🌱 Pionero 🟡 mantenimiento MIT oficial
Knockout mvvm-library 2010 🌱 Pionero 🟡 mantenimiento MIT oficial
MooTools dom-library 2006 🌱 Pionero ⚪ histórico MIT oficial
Prototype dom-library 2005 🌱 Pionero ⚪ histórico MIT oficial
AngularJS ui-framework 2010 🏛️ Clásico ⚪ histórico MIT oficial
Aurelia ui-framework 2015 🏛️ Clásico 🟡 mantenimiento MIT oficial
Ember.js ui-framework 2011 🏛️ Clásico 🟢 activo MIT oficial
Express web-framework 2010 🏛️ Clásico 🟢 activo MIT oficial
Ext JS ui-toolkit 2007 🏛️ Clásico 🟢 activo NOASSERTION oficial
Gatsby react-metaframework 2015 🏛️ Clásico 🟡 mantenimiento MIT oficial
hapi web-framework 2011 🏛️ Clásico 🟢 activo BSD-3-Clause oficial
Ionic ui-toolkit 2013 🏛️ Clásico 🟢 activo MIT oficial
Koa web-framework 2013 🏛️ Clásico 🟢 activo MIT oficial
Marko ui-framework 2014 🏛️ Clásico 🟢 activo MIT oficial
Mithril ui-framework 2014 🏛️ Clásico 🟡 mantenimiento MIT oficial
NativeScript ui-framework 2014 🏛️ Clásico 🟢 activo Apache-2.0 oficial
Rollup build-tool 2015 🏛️ Clásico 🟢 activo MIT oficial
Sails.js full-stack-framework 2012 🏛️ Clásico 🟡 mantenimiento MIT oficial
Socket.IO realtime-library 2010 🏛️ Clásico 🟢 activo MIT oficial
TypeORM orm 2016 🏛️ Clásico 🟢 activo MIT oficial
webpack build-tool 2012 🏛️ Clásico 🟢 activo MIT oficial
AdonisJS full-stack-framework 2015 🟢 Vigente 🟢 activo MIT oficial
Alpine.js dom-library 2019 🟢 Vigente 🟢 activo MIT oficial
Angular ui-framework 2016 🟢 Vigente 🟢 activo MIT oficial
Astro web-metaframework 2021 🟢 Vigente 🟢 activo MIT oficial
Capacitor runtime-bridge 2019 🟢 Vigente 🟢 activo MIT oficial
Deno runtime 2018 🟢 Vigente 🟢 activo MIT oficial
Docusaurus documentation-framework 2017 🟢 Vigente 🟢 activo MIT oficial
Electron desktop-runtime 2013 🟢 Vigente 🟢 activo MIT oficial
Eleventy static-site-generator 2018 🟢 Vigente 🟢 activo MIT oficial
Fastify web-framework 2016 🟢 Vigente 🟢 activo MIT oficial
Turbo (Hotwire) hypermedia-library 2021 🟢 Vigente 🟢 activo MIT oficial
htmx hypermedia-library 2020 🟢 Vigente 🟢 activo BSD-2-Clause oficial
Lit web-components-library 2021 🟢 Vigente 🟢 activo BSD-3-Clause oficial
NestJS application-framework 2017 🟢 Vigente 🟢 activo MIT oficial
Next.js react-metaframework 2016 🟢 Vigente 🟢 activo MIT oficial
Nitro server-toolkit 2021 🟢 Vigente 🟢 activo MIT oficial
Node.js runtime 2009 🟢 Vigente 🟢 activo MIT oficial
Nuxt vue-metaframework 2016 🟢 Vigente 🟢 activo MIT oficial
Preact ui-library 2015 🟢 Vigente 🟢 activo MIT oficial
Prisma ORM orm 2021 🟢 Vigente 🟢 activo Apache-2.0 oficial
React ui-library 2013 🟢 Vigente 🟢 activo MIT oficial
React Native ui-framework 2015 🟢 Vigente 🟢 activo MIT oficial
React Router routing-library 2014 🟢 Vigente 🟢 activo MIT oficial
Remix react-metaframework 2021 🟢 Vigente 🟢 activo MIT oficial
SolidJS ui-library 2018 🟢 Vigente 🟢 activo MIT oficial
Stimulus dom-library 2018 🟢 Vigente 🟢 activo MIT oficial
Svelte ui-framework 2016 🟢 Vigente 🟢 activo MIT oficial
SvelteKit svelte-metaframework 2022 🟢 Vigente 🟢 activo MIT oficial
tRPC rpc-library 2020 🟢 Vigente 🟢 activo MIT oficial
Vite build-tool 2020 🟢 Vigente 🟢 activo MIT oficial
VitePress documentation-framework 2022 🟢 Vigente 🟢 activo MIT oficial
Vue ui-framework 2014 🟢 Vigente 🟢 activo MIT oficial
Analog angular-metaframework 2023 🌊 Emergente 🟢 activo MIT oficial
Bun runtime 2022 🌊 Emergente 🟢 activo MIT oficial
Drizzle ORM orm 2022 🌊 Emergente 🟢 activo Apache-2.0 oficial
Elysia web-framework 2022 🌊 Emergente 🟢 activo MIT oficial
Hono web-framework 2021 🌊 Emergente 🟢 activo MIT oficial
Qwik ui-framework 2021 🌊 Emergente 🟢 activo MIT oficial
RedwoodJS full-stack-framework 2020 🌊 Emergente 🟢 activo MIT oficial
SolidStart solid-metaframework 2024 🌊 Emergente 🟢 activo MIT oficial

<!-- fin -->

Qué aportó cada una#

<!-- generado:notas-ecosistema javascript -->

<!-- fin -->

Para seguir#