¿Cuándo cambiar los temas/plugins a `.gjs`?

Creo que necesitamos una forma general de hacer esto, que sea específica y agnóstica al Componente de Tema, como la que tenemos ahora.

Tengo otro Componente de Tema que utiliza esta técnica:

Así que son al menos dos por mi parte, y puede que haya más.

3 Me gusta

Estoy de acuerdo. He creado una colección de componentes de bloques, cada uno independiente, en lugar de agruparlos en un solo paquete: Blocks · GitLab.

Ahora mismo puedo poner estos bloques en una página de inicio dedicada con mi componente Homepage Blocks, al igual que puedo usarlos con Right Sidebar Blocks, o en Bars.

Recientemente hice una prueba con el tema Central donde necesitaba un diseño de barra lateral personalizado. Podría construir fácilmente un marco de bloques para una barra lateral personalizada y poner componentes de bloques en él: https://central.kostka.studio (además de poner el componente Powered-by-discourse en la barra lateral, simplemente haciendo referencia a él por su nombre)

Los componentes de bloques independientes son realmente la herramienta más útil que tengo ahora mismo para construir personalizaciones para clientes de una manera flexible y mantenible. Sería genial tener un camino general para apoyar esto.

3 Me gusta

Me gustaría reactivar este tema, ya que estoy intentando averiguar la mejor manera de manejar mis componentes. Actualmente veo dos opciones que tienen inconvenientes importantes: podría crear un registro por componente de tema que renderice bloques, pero eso anula el propósito modular. O añadir uno globalmente a través de un plugin, pero entonces mis componentes dependerían de que ese plugin esté instalado.

Por lo tanto, parece que tener una API de registro de bloques global en el núcleo ayudaría mucho. Algo que los componentes de tema podrían usar para invocar la renderización de bloques y también para registrar nuevos bloques.

Me encanta trabajar con el enfoque de bloques porque me permite separar las preocupaciones entre el diseño de la aplicación y el contenido del componente. El componente de bloque solo se encarga de renderizar su contenido, y luego es renderizado por otro componente en la aplicación. Puedo eliminar toda la lógica de rutas y outlets del componente de bloque, y puedo reutilizar fácilmente el mismo bloque varias veces en un diseño e incluso en toda la aplicación.

Encuentro que hace que todo sea más ágil y reutilizable, y es un enfoque elegante en general. Sería genial tener un soporte sólido para este patrón en Discourse.

4 Me gusta