# Alpine.js ![npm bundle size](https://img.shields.io/bundlephobia/minzip/alpinejs) ![npm version](https://img.shields.io/npm/v/alpinejs) [![Chat](https://img.shields.io/badge/chat-on%20discord-7289da.svg?sanitize=true)](https://alpinejs.codewithhugo.com/chat/) Alpine.js ofrece las propiedades reactivas y declarativas de grandes *frameworks* como Vue o React con un coste mucho menor. Mantiene el DOM, pudiendo mejorar y perfeccionar el comportamiento como más convenga. Podríamos considerarlo como un [Tailwind](https://tailwindcss.com/) para JavaScript. > Nota: La sintaxis de esta herramienta está mayormente inspirada por [Vue](https://vuejs.org/) (y por extensión, de [Angular](https://angularjs.org/))). Estaré agradecido eternamente por lo que han aportado al desarrollo web. ## Instalación **Desde CDN:** Añade el siguiente script al final de tu sección ``. ```html ``` Eso es todo. Se inicializará solo. Para entornos de producción, se recomienda especificar una número de versión en concreto en el enlace para evitar comportamientos inesperados que puedan romper las nuevas versiones. Por ejemplo, para usar la versión `2.8.2` (la última): ```html ``` **Desde npm:** Instalar el paquete desde npm. ```js npm i alpinejs ``` Incluir en tu script. ```js import 'alpinejs' ``` **Para soporte en IE11** Utilizar los siguientes scripts. ```html ``` El patrón de arriba es el [module/nomodule pattern](https://philipwalton.com/articles/deploying-es2015-code-in-production-today/), que resultará en un empaquetado moderno cargado automáticamente en navegadores modernos, y el empaquetado para IE11 cargado automáticamente en IE11 y otros navegadores de legado. ## Usar *Desplegable/Modal* ```html
``` *Pestañas* ```html
Pestaña Foo
Pestaña Bar
``` También se puede utilizar para fines no-triviales: *Pre-fetching del contenido de un desplegable HTML al pasar el cursor por encima* ```html
Cargando Ruleta...
``` ## Aprender Hay 14 directivas disponibles: | Directiva | Descripción | | --- | --- | | [`x-data`](#x-data) | Declara un nuevo *scope* del componente. | | [`x-init`](#x-init) | Ejecuta una expresión cuando un componente se inicializa. | | [`x-show`](#x-show) | Alterna `display: none;` en el elemento dependiendo de la expresión booleana (true o false). | | [`x-bind`](#x-bind) | Asigna el valor de un atributo a partir de el resultado de una expresión de JS. | | [`x-on`](#x-on) | Adjunta un evento *listener* al elemento. Ejecuta una expresión de JS cuando se emite el evento. | | [`x-model`](#x-model) | Añade *"two-way data binding"* al elemento. Mantiene la entrada del elemento sincronizado con los datos del componente. | | [`x-text`](#x-text) | Funciona similar a `x-bind`, pero actualiza el `innerText` del elemento. | | [`x-html`](#x-html) | Funciona similar a `x-bind`, pero actualiza el `innerHTML` del elemento. | | [`x-ref`](#x-ref) | Forma conveniente de extraer elementos crudos del DOM del componente. | | [`x-if`](#x-if) | Elimina totalmente un elemento del DOM. Debe ser utilizado en una etiqueta `