Plugins al estilo WordPress, pero para Next.js

Rate this content
Bookmark
Slides

Acompáñame en mi viaje de creación del Sistema de Plugins al estilo WordPress para Next.js, un experimento que mejora las aplicaciones de Next.js permitiendo la fácil instalación y personalización de plugins para características como Google Analytics, Inicio de sesión social y Comercio electrónico. Mostraré las características únicas del sistema de plugins basado en archivos, como el almacenamiento persistente por plugin, el registro de componentes, rutas y funciones, y un sistema de eventos entre plugins. La charla también comparte la historia de cómo y por qué resolví este problema para facilitar la vida de los desarrolladores. Echa un vistazo al experimento en https://github.com/gluestack/next-wordpress-plugins.

This talk has been presented at React Day Berlin 2023, check out the latest edition of this React Conference.

FAQ

Sanket Sahu es el director de una empresa llamada GeekyAnts, y co-creó una biblioteca de componentes de interfaz de usuario llamada Nativebase para React Native y React.

Nativebase es una biblioteca universal de componentes de interfaz de usuario desarrollada para React Native y React, diseñada para facilitar la construcción de interfaces de usuario consistentes y escalables.

Sanket Sahu está trabajando en el ecosistema de Glue Stack, que incluye la versión 3 de Nativebase y herramientas relacionadas con el sistema de diseño.

Sanket Sahu propone desarrollar un sistema de plugins para Next.js, similar al sistema de WordPress, que permita añadir funcionalidades a las aplicaciones de forma sencilla mediante la inclusión de plugins en los proyectos.

El sistema de plugins permitiría co-ubicar funcionalidades específicas como autenticación dentro de módulos o espacios de nombres propios, que podrían ser añadidos o eliminados fácilmente, modificando así la funcionalidad de la aplicación de manera dinámica similar a como funcionan las extensiones en WordPress.

Este sistema permite una co-localización por característica, facilita la gestión de dependencias y permite un registro dinámico de rutas y componentes, lo que simplifica la integración y eliminación de funcionalidades en aplicaciones web.

A diferencia de los paquetes de NPM que requieren instalación e integración manual, los plugins en el sistema propuesto por Sanket Sahu permiten añadir funcionalidades directamente al usuario final sin pasos adicionales, similar a los plugins de WordPress.

Sanket Sahu
Sanket Sahu
9 min
12 Dec, 2024

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Esta charla discute la implementación de un sistema de plugins para Next.js, similar a Wordpress. El sistema de plugins permite la co-localización de diferentes funcionalidades dentro de sus propios módulos. Los plugins pueden ser fácilmente añadidos o eliminados sin afectar otras partes del sitio web. La charla también muestra una demostración del sistema de plugins en acción. Las conclusiones clave incluyen los beneficios de la co-localización de características, la importancia de la abstracción de código más allá de los paquetes, y el futuro del copiado y pegado como medio de reutilización de código.

1. Construyendo un Sistema de Plugins para Next.js

Short description:

Voy a hablar sobre cómo podemos construir un sistema de plugins similar a Wordpress para Next.js. Utilizando este sistema de plugins, podemos co-ubicar diferentes funcionalidades dentro de su propio sistema de módulos o espacio de nombres. La arquitectura incluye un sistema de plugins que actúa como un paso intermedio en Next.js, con su propia tienda para rutas y componentes. Permíteme mostrarte una rápida demostración de cómo funciona.

Hola React, querido Berlín, ¿cómo les va? Soy Sanket Sahu, y dirijo una empresa llamada GeekyAnds, y co-creé una biblioteca de componentes de interfaz de usuario para React Native y React llamada Nativebase. Estos días estoy trabajando en el ecosistema de Glue Stack ecosystem, que está en la línea de la versión 3 de Nativebase, biblioteca universal de componentes de interfaz de usuario component library, y herramientas alrededor del sistema de design.

Pero hoy voy a hablar de algo más. Se trata de cómo podemos construir un sistema de plugins tipo Wordpress, pero para Next.js. Pasamos muchas cosas de PHP a React, y ¿qué explica mejor que este meme? Entonces, ¿por qué no plugins? Si aún no lo sabes, los plugins de WordPress son como un montón de plugins que están segregados en carpetas, y tan pronto como los sueltas en tu proyecto, obtenemos cambios funcionales, cambios de funcionalidad, tan pronto como añadimos estos plugins. Algo así como una extensión de Chrome, pero un poco diferente cuando lo comparas con los paquetes de npm. En los paquetes tienes que instalar e integrar tú mismo, mientras que los plugins, añaden funcionalidad al usuario final.

Así es el panel de control de WordPress donde tenemos múltiples plugins. Y este es un ejemplo de los viejos tiempos de cómo puedes subir un plugin. Este es un ejemplo de formulario de contacto, y tan pronto como lo subes, tienes esa característica disponible en tu sitio web. Entonces, ¿por qué no para el siguiente? Así que utilizando este sistema de plugins, podemos pasar de esta estructura de carpetas donde tenemos, por ejemplo, el comportamiento de autenticación o authentication distribuido en toda tu aplicación, ¿verdad? Desde, digamos, páginas slash login.js componentes, formulario de inicio de sesión.js, y luego API para lo mismo, inicio de sesión y cierre de sesión. Luego el middleware, y la tienda, y un montón de cosas diferentes. Así que con el sistema de plugins, podemos co-ubicar todas estas cosas dentro de su propio sistema de módulos o espacio de nombres en el que tan pronto como añadas o quites este plugin, entonces ese comportamiento de autenticación se elimina de tu aplicación, ¿verdad? Así que en este experimento, he intentado hacer un sistema de plugins basado en archivos inspirado en WordPress, y estos plugins habilitan características visuales y no visuales por plugin. Tengo la lista de comprobación de WordPress, que es un sistema basado en archivos, tienda persistente por plugin, registro de componentes, rutas, funciones, sistema de eventos, y gestión de dependencias. Aunque esto es solo un experimento, he intentado imitar estos tres comportamientos, basado en sistema de archivos, registro de componentes, y registro de rutas. Y así es como se ve la architecture. Así que tenemos este sistema de plugins, y todos los plugins hablan con él. Este sistema de plugins actúa como un paso intermedio en diferentes lugares en Next.js. Tenemos un proveedor raíz para el sistema de plugins y tenemos alguna implementación en middleware.ts y en algún lugar en el archivo all.tsx. Mantiene su propia tienda para rutas y componentes. Así que, sí, así es como se ve la architecture. Sí, así que es hora de alguna demostración. Genial. Así que permíteme intentar esto. Bien, ¿cómo se ve el código? Así que tenemos una carpeta de plugins y tan pronto como instalamos o añadimos estas carpetas, obtenemos esas funcionalidades. Así que una rápida demostración sería esta. Así que esta es una aplicación Next.js, que tiene el sistema de plugins instalado. Así que lo que he hecho es vamos a eliminar todos estos plugins en la carpeta de descargas. Y si voy y refresco esto, así que este es ahora un sitio web que no tiene ningún plugin instalado. Digamos, si quiero hacer digamos, un plugin de Hola Mundo, que esencialmente añade un mensaje de alerta, tan pronto como lo suelto, vemos este Hola Mundo siendo activado.

2. Añadiendo Plugins a Next.js

Short description:

Este plugin nos permite añadir diferentes funcionalidades a Next.js como plugins separados. Podemos añadir componentes y rutas específicas para cada plugin, como un comportamiento de Hola Mundo o una página de próximamente. Los plugins son independientes y pueden ser añadidos o eliminados sin afectar otras partes del sitio web. Por ejemplo, podemos añadir un chatbot o un sistema de autenticación, que incluye rutas, middleware y un sistema de inicio de sesión completamente funcional.

¿Qué hace esto? Así que este plugin está todo aquí, quiero decir, todo ubicado dentro de esto, y añade un simple comportamiento de Hola Mundo a esto. Veamos el código para esto. Así que tenemos plugins y luego Hola Mundo. Así que esto implementa iplugin, y tenemos un método de arranque. Si el tipo de ventana no está definido, eso significa que si es un navegador muestra la alerta Hola Mundo. Así que acabamos de añadir esta carpeta y automáticamente añadió el mensaje de alerta Hola Mundo en todas las páginas.

Este es sólo un ejemplo simple, pero podemos ir más allá de esto, por ejemplo, digamos, página de próximamente quiero crear una página de próximamente con un plugin. Así que podemos simplemente eliminar Hola Mundo por un tiempo, y luego podemos obtener toda la ruta de próximamente aquí tan pronto como lo hagamos. Así que esto está todo dentro de esto, la carpeta de próximamente toda junta. Así que si ves esto, tenemos una función de registro de ruta, que estamos llamando en nuestro plugin de página de próximamente. Y sí, tenemos una ruta y un componente contra eso. Y este componente está aquí. Y he usado glue stack UI para el estilo. Y tiene algunos activos y todas esas cosas.

Así que esta página, este plugin es independiente. Puedes añadirlo o eliminarlo sin tener ninguna dependencia en cosas separadas. Así que tenemos un chatbot por ejemplo. Tan pronto como lo añadimos, obtenemos este chatbot aquí, que está completamente desacoplado de la lógica de tu página actual y luego aparece en todas partes, por ejemplo. Luego tenemos digamos un sistema de authentication. Así que no tenemos nada como inicio de sesión aquí, por ejemplo. Pero tan pronto como añadimos este plugin de Auth completo aquí, esto habilita y hace que todo el sitio web tenga un sistema de inicio de sesión aquí y tiene un sistema de inicio de sesión completamente funcional. Tiene una API, tiene las rutas, middleware y todo. Veamos rápidamente eso también. En el plugin de Auth estamos registrando algunas de las rutas como login y home, estamos registrando API login, API logout y también estamos registrando un middleware que comprueba para el inicio de sesión. Sí, así que todas estas cosas ahora funcionan. Déjame ver cuál es el nombre de usuario y la contraseña para que pueda seguir e intentar iniciar sesión. Vale, así que sí, veamos y veamos. Vale, así que esto funciona y ahora slash home está restringido. Si estás registrado, entonces sólo se muestra. Si no, toda la lógica se añade a esto.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Enrutamiento en React 18 y más allá
React Summit 2022React Summit 2022
20 min
Enrutamiento en React 18 y más allá
Top Content
Routing in React 18 brings a native app-like user experience and allows applications to transition between different environments. React Router and Next.js have different approaches to routing, with React Router using component-based routing and Next.js using file system-based routing. React server components provide the primitives to address the disadvantages of multipage applications while maintaining the same user experience. Improving navigation and routing in React involves including loading UI, pre-rendering parts of the screen, and using server components for more performant experiences. Next.js and Remix are moving towards a converging solution by combining component-based routing with file system routing.
Una Guía Práctica para Migrar a Componentes de Servidor
React Advanced 2023React Advanced 2023
28 min
Una Guía Práctica para Migrar a Componentes de Servidor
Top Content
React query version five is live and we'll be discussing the migration process to server components using Next.js and React Query. The process involves planning, preparing, and setting up server components, migrating pages, adding layouts, and moving components to the server. We'll also explore the benefits of server components such as reducing JavaScript shipping, enabling powerful caching, and leveraging the features of the app router. Additionally, we'll cover topics like handling authentication, rendering in server components, and the impact on server load and costs.
El Nuevo Router de Aplicaciones Next.js
React Summit 2023React Summit 2023
27 min
El Nuevo Router de Aplicaciones Next.js
Top Content
Today's Talk is about the Next.js App Router, which has evolved over the years and is now a core feature of Next.js. The Talk covers topics such as adding components, fetching remote data, and exploring layouts. It also discusses submitting form data, simplifying code, and reusing components. The App Router allows for coexistence with the existing pages router and enables data fetching at the layout level using React Server Components.
No sabes cómo hacer SSR
DevOps.js Conf 2024DevOps.js Conf 2024
23 min
No sabes cómo hacer SSR
The Talk covers the speaker's personal journey into server-side rendering (SSR) and the evolution of web development frameworks. It explores the use of jQuery for animations in SSR, the challenges faced in integrating React with Umbraco, and the creation of a custom SSR framework. The Talk also discusses the benefits of Next.js and the use of serverless artifacts for deployment. Finally, it highlights the features of Astro, including its function per route capability.
Cómo manejar correctamente los cambios de URL slug en Next.js
TypeScript Congress 2022TypeScript Congress 2022
10 min
Cómo manejar correctamente los cambios de URL slug en Next.js
Top Content
This Talk explains how to handle URL slug changes in Next.js by using the getStaticPaths and getStaticProps methods. It covers implementing redirects and provides a solution to eliminate the need for editors to perform additional steps. The approach involves tracking URL slug changes and issuing proper redirects. The speaker encourages the audience to reach out with any questions or experiences with handling URL slugs.
Eliminando BFFs con GraphQL y Next.js
React Advanced 2021React Advanced 2021
21 min
Eliminando BFFs con GraphQL y Next.js
Top Content
This talk discusses the challenges and benefits of using Backend for Frontends (BFFs) and microservices in software development. It highlights how Next.js can simplify the creation of BFFs and unify the gateway for microservices. The talk also emphasizes the advantages of Next.js API routes in simplifying the development, deployment, and maintenance of APIs. It showcases the implementation of a BFF using Next.js and API routes, and the extension of API routes in an executable way. The speaker also mentions launching a course on using Next.js API routes for building a serverless GraphQL API.

Workshops on related topic

AI para Desarrolladores de React
React Advanced 2024React Advanced 2024
142 min
AI para Desarrolladores de React
Featured Workshop
Eve Porcello
Eve Porcello
El conocimiento de las herramientas de AI es fundamental para preparar el futuro de las carreras de los desarrolladores de React, y la suite de herramientas de AI de Vercel es una vía de acceso accesible. En este curso, examinaremos más de cerca el Vercel AI SDK y cómo esto puede ayudar a los desarrolladores de React a construir interfaces de transmisión con JavaScript y Next.js. También incorporaremos APIs de terceros adicionales para construir y desplegar una aplicación de visualización de música.
Temas:- Creación de un Proyecto de React con Next.js- Elección de un LLM- Personalización de Interfaces de Transmisión- Construcción de Rutas- Creación y Generación de Componentes - Uso de Hooks (useChat, useCompletion, useActions, etc)
Tracing: Frontend Issues With Backend Solutions
React Summit US 2024React Summit US 2024
112 min
Tracing: Frontend Issues With Backend Solutions
Featured WorkshopFree
Lazar Nikolov
Sarah Guthals
2 authors
Los problemas de frontend que afectan a tus usuarios a menudo son provocados por problemas de backend. En esta masterclass, aprenderás cómo identificar problemas que causan páginas web lentas y malos Core Web Vitals usando tracing.
Luego, pruébalo tú mismo configurando Sentry en un proyecto Next.js ya preparado para descubrir problemas de rendimiento, incluyendo consultas lentas a la base de datos en una sesión interactiva de programación en pareja.
Saldrás de la masterclass siendo capaz de:- Encontrar problemas de backend que podrían estar ralentizando tus aplicaciones de frontend- Configurar tracing con Sentry en un proyecto Next.js- Depurar y solucionar problemas de rendimiento deficiente usando tracing
Este será un evento en vivo de 2 horas donde tendrás la oportunidad de codificar junto con nosotros y hacernos preguntas.
Construye una aplicación WordPress sin cabeza con Next.js y WPGraphQL
React Summit 2022React Summit 2022
173 min
Construye una aplicación WordPress sin cabeza con Next.js y WPGraphQL
Top Content
WorkshopFree
Kellen Mace
Kellen Mace
En esta masterclass, aprenderás cómo construir una aplicación Next.js que utiliza Apollo Client para obtener datos de un backend de WordPress sin cabeza y usarlo para renderizar las páginas de tu aplicación. Aprenderás cuándo debes considerar una arquitectura de WordPress sin cabeza, cómo convertir un backend de WordPress en un servidor GraphQL, cómo componer consultas usando el IDE GraphiQL, cómo colocar fragmentos GraphQL con tus componentes, y más.
Next.js 13: Estrategias de Obtención de Datos
React Day Berlin 2022React Day Berlin 2022
53 min
Next.js 13: Estrategias de Obtención de Datos
Top Content
WorkshopFree
Alice De Mauro
Alice De Mauro
- Introducción- Prerrequisitos para la masterclass- Estrategias de obtención: fundamentos- Estrategias de obtención – práctica: API de obtención, caché (estática VS dinámica), revalidar, suspense (obtención de datos en paralelo)- Prueba tu construcción y sírvela en Vercel- Futuro: Componentes de servidor VS Componentes de cliente- Huevo de pascua de la masterclass (no relacionado con el tema, destacando la accesibilidad)- Conclusión
De Todo App a B2B SaaS con Next.js y Clerk
React Summit US 2023React Summit US 2023
153 min
De Todo App a B2B SaaS con Next.js y Clerk
Top Content
WorkshopFree
Dev Agrawal
Dev Agrawal
Si eres como yo, probablemente tengas un millón de ideas para proyectos secundarios, algunas de las cuales incluso podrían hacerte ganar dinero como un micro SaaS, o podrían resultar ser la próxima startup de mil millones de dólares. Pero, ¿cómo sabes cuáles? ¿Cómo pasas de una idea a un producto funcional que puede ser puesto en manos de clientes que pagan sin renunciar a tu trabajo e invirtiendo todo tu tiempo y dinero en ello? ¿Cómo pueden competir tus proyectos secundarios en solitario con las aplicaciones construidas por enormes equipos y grandes empresas?
Construir productos SaaS ricos viene con desafíos técnicos como infraestructura, escalabilidad, disponibilidad, seguridad y subsistemas complicados como autenticación y pagos. Por eso, a menudo son los gigantes tecnológicos ya establecidos quienes pueden construir y operar productos de este tipo de manera razonable. Sin embargo, una nueva generación de devtools está permitiendo a los desarrolladores construir fácilmente soluciones completas que aprovechan la mejor infraestructura en la nube disponible, y ofrecen una experiencia que te permite iterar rápidamente en tus ideas por un bajo costo de $0. Se llevan todos los desafíos técnicos de construir y operar productos de software para que solo tengas que pasar tu tiempo construyendo las características que tus usuarios quieren, dándote una oportunidad razonable de competir contra el mercado al mantenerte increíblemente ágil y receptivo a las necesidades de los usuarios.
En esta masterclass de 3 horas comenzarás con una simple aplicación de gestión de tareas construida con React y Next.js y la convertirás en un producto SaaS completamente funcional y escalable integrando una base de datos escalable (PlanetScale), autenticación multi-tenant (Clerk), y pagos basados en suscripción (Stripe). También aprenderás cómo los principios del desarrollo de software ágil y el diseño impulsado por el dominio pueden ayudarte a construir productos rápidamente y de manera rentable, y competir con las soluciones existentes.
Crea un sitio web editable visualmente con Next.js utilizando React Bricks, con blog y comercio electrónico
React Summit 2023React Summit 2023
139 min
Crea un sitio web editable visualmente con Next.js utilizando React Bricks, con blog y comercio electrónico
Top Content
WorkshopFree
Matteo Frana
Matteo Frana
- React Bricks: por qué lo construimos, qué es y cómo funciona- Crea una cuenta gratuita- Crea un nuevo proyecto con Next.js y Tailwind- Explora la estructura del directorio- Anatomía de un Brick- Crea un nuevo Brick (Texto-Imagen)- Añade un título y descripción con edición visual RichText- Añade una imagen con edición visual- Añade controles de barra lateral para editar props (relleno y lado de la imagen)- Anidación de Bricks utilizando el componente Repeater- Crea un brick de galería de imágenes- Publica en Netlify o Vercel- Tipos de página y campos personalizados- Acceso a los valores meta de la página- Internacionalización- Cómo reutilizar contenido en varias páginas: Historias y incrustaciones- Cómo crear un comercio electrónico con datos de productos de una base de datos externa y páginas de aterrizaje creadas visualmente en React Bricks- Características empresariales avanzadas: permisos flexibles, estructura bloqueada, componentes visuales personalizados