This guide will know the essentials to start developing webcomponents with Atomico
Thanks for being here and getting started with Atomico. Let's talk a little about what Atomico offers today:
Development agility, Atomico's functional approach simplifies code at all stages of development.
Lightweight inside and out, Atomico allows you to create a component with less code and with a low dependency impact. Approximately 3kb.
Really fast, Atomico has a good performance in the browser and an agile development experience. Let's understand what a webcomponent created with Atomico looks like:
Let's analyze the code in parts ...
What have we imported?
c
: Function that transforms the functional component into a standard customElement.
html
: Function to declare the template of our component, you can also use JSX.
css
: Function that allows creating the CSSStyleSheet (CSS) for our component as long as it declares the shadowDom.
Our component function receives all the props (Properties and Attributes) declared in component.props, the component function declares all the logic and template of the webcomponent. An important rule within Atomico is "every component created with Atomico must always return the tag".
Atomico detects the prop (Properties and Attributes) of the component thanks to the association of the props object, this through the use of index and value allows you to define:
index: Name of the property and attribute.
value: type of the prop.
From the example we can infer that Atomico will create in our webcomponent a property and attribute called message
and this can only receive values of the String
type.
Atomico detects the static styles of your component thanks to the association of the styles
property:
styles accepts individual or list CSSStyleSheet (CSS) values, the return from the css function is a standard CSSStyleSheet, so it can be shared outside of Atomico.
To create our standard customElement we will have to deliver our functional component to the c function of the Atomico module, the c
function will generate as a return a customElement that can be defined or extended.