LogoLogo
GithubTwitterDiscordPlayground
Español
Español
  • 👋Atomico
  • 🚀Comenzando con Webcomponents
  • Api
    • 🧬Props(Propiedades)
    • 🧩Virtual DOM
    • 🎣Hooks
    • 🔬Testing
  • guías
    • ✨Sistemas de diseño con Atomico
      • Estrategias de estructuración de repositorio con Atomico al crear sistemas de diseño.
        • Monorepositorio versionado a nivel de componente
        • Monorepositorio versionado a nivel de sistema de diseño
      • Storybook
        • @atomico/storybook
      • Tokens (CSS custom properties)
      • Slots
    • 📖Atomico + Storybook
    • 🛡️Atomico + Typescript
    • ⚛️Atomico + React
    • 💧Atomico + SSR/SSG
    • 🧠Patrones de diseño
    • 🗺️Guía de estilo (Estructuras)
    • 🔀Slot
  • @atomico
    • @atomico/vite
    • @atomico/hooks
    • @atomico/components
    • @atomico/exports
    • @atomico/react
    • @atomico/router
    • @atomico/store
    • @atomico/storybook
  • Soporte
    • Discord
    • Github
    • Twitter
Powered by GitBook
On this page
  • Importación
  • Webcomponent
  • Propiedades y atributos reactivos del webcomponent
  • Apariencia del webcomponent.
  • Definición de tu webcomponent
  • Ejemplo

Was this helpful?

Edit on GitHub
Export as PDF

Comenzando con Webcomponents

Esta guía conocerás lo esencial para comenzar a desarrollar webcomponents con Atomico

PreviousAtomicoNextProps(Propiedades)

Last updated 3 years ago

Was this helpful?

Gracias por estar aquí e iniciarte con Atomico. Hablemos un poco de lo que hoy ofrece atomico:

  1. Agilidad de desarrollo, el enfoque funcional de Atomico simplifica el código en todas las etapas de desarrollo.

  2. Ligero por dentro y por fuera, Atomico te permite crear un componente con menos código y con un bajo impacto de dependencias 3kb Aproximadamente.

  3. Realmente rapido, Atomico posee un en el browser y una experiencia de desarrollo ágil.

Entendamos el como luce un webcomponent creado con Atomico:

// IMPORTACIÓN
import { c, html, css } from "atomico";

// WEBCOMPONENT
function component({ message }) {
  return html`<host shadowDom>${message}</host>`;
}

// PROPIEDADES Y ATRIBUTOS DEL WEBCOMPONENTE
component.props = {
  message: String,
};

// APARIENCIA DEL WEBCOMPONENTE
component.styles = css`
  :host {
    font-size: 30px;
  }
`;

// DEFINICION DEL WEBCOMPONENT COMO ETIQUETA
customElements.define("my-component", c(component));

Analicemos el código por partes...

Importación

import { c, html, css } from "atomico";

¿Qué hemos importado?

  1. c: Función que transforma el componente funcional en un customElement estándar.

  2. html: Función para declarar la plantilla de nuestro componente, también puedes usar JSX.

  3. css: Función que permite crear el CSSStyleSheet(CSS) para nuestro componente siempre y cuando este declare el shadowDom.

Webcomponent

function component({ message }) {
  return html`<host shadowDom>${message}</host>`;
}

Nuestra función component recibe todas las props(Propiedades y Atributos) declaradas en component.props, la función component declara toda la lógica y plantilla del webcomponent. Una regla importante dentro de Atomico es "todo componente creado con Atomico debe siempre retornar el tag <host>".

Propiedades y atributos reactivos del webcomponent

Atomico detecta las prop(Propiedades y Atributos) del componente gracias a la asociación del objeto props, esto mediante el uso de índices y valores te permite definir:

  1. índice: Nombre de la propiedad y atributo.

  2. Valor: tipo de la prop.

component.props = {
  message: String,
};

Del ejemplo podemos inferir que Atomico creará en nuestro webcomponente una propiedad y atributo llamada mensaje y esta solo puede recibir valores del tipo String.

Apariencia del webcomponent.

Atomico detecta los estilos estáticos de tu componente gracias a la asociación de la propiedad styles:

component.styles = css`
  :host {
    font-size: 30px;
  }
`;

styles acepta valores CSSStyleSheet(CSS) de forma individual o en lista, el retorno de la función css es un CSSStyleSheet estándar, por lo que puede ser compartido fuera de Atomico.

Definición de tu webcomponent

customElements.define("my-component", c(component));

Para crear nuestro customElement estándar deberemos entregar nuestro componente funcional a la función c del módulo de Atomico, la función c generará como retorno un customElement que puede ser definido o extendido.

Ejemplo

🚀
buen performance
LogoWebComponents.devWebComponents.dev