¿Cómo desacoplar los componentes web?

Estoy tratando de trabajar sin marco, con componentes web de javascript puro. Quiero que mis componentes web funcionen de forma independiente y se utilicen en diferentes sitios, y también quiero que dos componentes puedan comunicarse. Por lo tanto, deberían poder comunicarse sin estar estrechamente acoplados.

Cuando hice Angular, esto fue fácil. Puedo pasar objetos a un componente a través de un atributo HTML, y el componente lo recibe como un objeto en lugar de una cadena. Pero en JavaScript puro, los atributos son siempre cadenas. ¿Cuál es la forma correcta de pasar objetos o hacer que Web Components se conozca y pueda comunicarse?

Respuestas a la pregunta(2)

Su respuesta a la pregunta