Las arquitecturas de WordPress libres de WordPress usan marcos de JavaScript modernos, como reaccionas para crear experiencias que superen los límites de lo que es posible con WordPress. En el video a continuación, descubra cómo WP Engine ayuda a modelar el futuro WordPress.
Video: Construcción de experiencias modernas con WordPress sin cabeza en esta sesión, gerente de relaciones con desarrolladores de motores WP, Matt Landers, Talk:
Todo Atlas, comenzando con el código en el sitio web de WP Engine Developers para una demostración de contenido sin cabeza.
Nuevas herramientas, como Atlas Content Modeler y Content Engine, incluidas demostraciones de sitios en vivo que utilizan estas fuertes aplicaciones sin cabeza.
Creo que eso realmente cambia el juego para WordPress sin cabeza. Tener la capacidad de crear tipos personalizados de contenido de una manera agradable, primero sin cabeza, con una excelente experiencia para el usuario del desarrollador que crea los tipos y el editor que ingresará el contenido, es esencial crear un excelente CMS.
Transcripción Texto Integral Matt Landers: Hola, Summit 2021. Soy Matt Landers, el jefe de relaciones con los desarrolladores de WP Engine. Y en esta sesión, haremos una demostración de todo lo que es Atlas. Entonces, no hay diapositivas o algo como esto, solo miraremos el código, escribiremos algunos códigos y luego veremos algunas cosas que seguirán en el futuro. Entonces, lo primero que haremos es mirar nuestro sitio web para desarrolladores sin cabeza. Es en desarrolladores.wpengine.com. Analizaremos ese código, veremos cómo hacemos algunas de las cosas en ese sitio. Y luego echaremos un vistazo a una nueva herramienta que tenemos, Atlas Content Modeler, y veremos cómo podríamos hacer algunas cosas de manera diferente y construir un sitio pequeño con esa herramienta. Después de eso, cuando terminemos, obtendremos un Presentación del motor de contenido, que debería haber escuchado en el discurso principal. Veremos un sitio en vivo que se ejecuta. Y hablaremos un poco sobre lo que podría seguir en el futuro. Así que buceemos y veamos el sitio web del desarrollador. ESTÁ BIEN. Así que este es el sitio web del desarrollador. Si no has estado aquí, definitivamente deberías consultar. Está en desarrolladores.wpengine.com. Hay enlaces a donde puedes ponerte en contacto conmigo y mi equipo. Por ejemplo, nuestro servidor de discordia, sin duda, únase a él y ingrese a nuestra comunidad y hable sobre todo lo relacionado con la cabeza. Hay un podcast que lanzamos todos los lunes, verifíquelo, el podcast Decode. Y también tenemos un canal de YouTube, donde publicamos tutoriales de video, blogs y cualquier otra cosa.
Entonces, en la página principal aquí, notará que tenemos algunos blogs. Vienen directamente de WordPress, solo sus publicaciones. Y luego aquí, tenemos enlaces a una documentación. Ahora, toda esta documentación está realmente en Github. Así que tenemos un depósito, docentes sin cabeza, donde hay muchos de nuestros documentos sin cabeza, que se sienten atraídos por este sitio. Entonces es una fuente de datos para nosotros. Así que tenemos WordPress, GitHub y luego tenemos videos aquí, que extraemos de YouTube. Ahora, estos videos también tienen un tipo de publicación personalizada sobre ellos, de la que quiero hablar. Y esto es lo que usaremos Atlas Content Modeler para mostrar cómo hacemos esto con él, en lugar de la forma en que lo hacemos ahora. Así que profundicemos un poco en la forma en que hacemos estos tutoriales de video en este momento. Entonces, si voy a WordPress, notará que tengo una publicación personalizada llamada videos. Así que aquí están todos los videos. Entonces tienen cada uno de los campos diferentes relacionados con ellos. Tener la URL del video, la fecha de publicación y el título. Así que veamos uno. Aquí hay uno sobre los tipos de contenido personalizado. También tenemos datos de SEO aquí. Y luego retiramos estos datos con una consulta a WP GraphQL. Así que esta es la consulta que usamos en nuestro código y retiramos una lista de todos estos videos, directamente de ese tipo de publicación personalizada. Esto es muy conveniente para poder crear esta hermosa experiencia de introducción de datos para nuestros editores o para cualquier persona que edite estos datos, para poder poner las cosas en el sitio de una manera muy estructurada.
Esto es muy común en una configuración sin cabeza. Y la forma en que tienes que hacerlo hoy es que necesitamos algunos complementos. Entonces, los que usamos aquí son los campos personalizados avanzados, la interfaz de uso para las publicaciones personalizadas y luego la extensión WPGraphQL para los campos personalizados avanzados. Y lo que nos permite hacer es crear un tipo de contenido personalizado en forma de una publicación personalizada, luego agregarle un campo con campos personalizados avanzados y luego interrogarlos a través de GraphQL. Así que esta es una pieza realmente importante en la construcción de un sitio sin cabeza. Esto sucede todo el tiempo. Pero la experiencia que obtenemos cuando usamos estos complementos no es excelente ahora. Entonces, si voy a la interfaz de usuario de Tipo de publicación personalizada, tengo que venir aquí, tomo el tipo de publicación de videos, tengo todos estos datos adicionales aquí, no me importa, no importa en un mundo sin cabeza. Y luego, Cuando llego al final, puedo agregarlo a GraphQL, puedo nombrar cómo quiero ese tipo de publicación y todas estas cosas. Por lo tanto, existe una desconexión entre lo que tradicionalmente se usa un tipo de publicación personalizada en WordPress y lo que tengo que hacer en un escenario sin cabeza. Entonces, tengo que ir a mis campos personalizados y crear un grupo de campos personalizados que se adjunta a mi tipo de publicación personalizada. Así que ahora hago cosas en dos lugares diferentes. Entonces puedes ver que esta es una experiencia desconectada. Cuando, de hecho, lo que quiero hacer es crear un modelo de datos para mi tipo de publicación personalizada y luego tener una forma agradable de ingresar esos datos.
Entonces eso funciona. Y puedes hacer eso hoy. Lo usamos en todos nuestros sitios sin cabeza. Definitivamente lo recomiendo. Puede consultar algunos videos que tenemos en nuestro sitio web sobre cómo crear tipos de contenido personalizados. Y le presenta todos los complementos que necesita y hace una demostración sobre cómo construir un sitio desde cero el uso. Por lo tanto, ciertamente lo verifica si está interesado en cómo funciona en detalle. Pero ahora, vamos al sitio y veamos cómo se traduce. Entonces llegamos con estos tutoriales de video. Trae los primeros tres para la página inicial. Y si hago clic en mirar más o ver más, puedo verlos a todos. Así que ahora vamos al código y veamos cómo funciona.
Así que ahora estoy en el código de sitio web para desarrolladores. Y puedes ver que estoy en la página de video. Eso me muestra la lista de videos. Tengo mi pregunta aquí, lo que acabo de rodar en el editor gráfico. Y luego tengo que mi componente reacciona que el lugar donde dibujamos estos datos. Y, básicamente, todo lo que tenemos que hacer es usar nuestro marco sin cabeza y obtener nuestro cliente Apollo. Hacemos esa consulta aquí. Y luego … entonces esos datos estarán disponibles para nosotros en nuestro componente, ya que llegamos aquí. Hacemos la misma consulta en el lado del cliente o dentro del componente. Entonces esto sucederá en el lado del servidor.
Entonces, la forma en que funciona el marco es que hará esa consulta en el servidor.Recuperaremos los videos.Los guardaremos en un caché Apollo y nos aseguraremos de que estén disponibles en el cliente.Restauraremos ese caché.Entonces, cada vez que este componente se ejecuta en un servidor, hacemos esa llamada, recibimos los videos.Y luego, en el cliente, ya tenemos los datos almacenados en el caché, por lo que en realidad no hace la llamada nuevamente.Hacemos esa llamada una vez.Y esto es algo que obtienes con el marco sin cabeza.Así que verifique eso también.ESTÁ BIEN.Entonces puede ver cómo funciona este proceso.Es solo un componente React que extrae datos de WordPress.Y tuvimos que usar los tipos de publicaciones personalizadas y campos personalizados avanzados para hacerlo.
Entonces, en la siguiente parte de esta demostración, para construir un sitio que haga algo muy similar, pero utilizando nuestro modelo de contenido Atlas. Y analizaremos qué es, cómo funciona y cómo lo implementaría en su sitio. Tengo un sitio pequeño. No hice mucho. Acabamos de comenzar con nuestro comienzo de marco sin cabeza, luego lo reducimos un poco y solo muestro una lista de publicaciones que aparecen de un sitio local de WordPress que ejecuto. Así que echemos un vistazo. Tengo un sitio local que se ejecuta aquí. No muchos en este momento. Tenemos algunos complementos instalados, uno de ellos es Atlas Content Modeler, que en realidad aún no usamos. Usaremos esto ahora mismo en esta demostración. Pero tendré el complemento sin cabeza WP Engine, que forma parte de nuestra cabeza y WP GraphQL. Entonces no hay muchos aquí. Y luego solo tengo algunas publicaciones. Así que veamos Visual Studio. Y aquí hay una ruta que atrapa todo lo que tengo. Así que solo tengo una ruta completamente, y esto es JS. Y muestra la página. Y solo tiene un componente de aspecto aquí, que no investigaremos. Y luego pasamos por las publicaciones y las mostramos en la pantalla. Y es bastante simple. Entonces, con el marco sin cabeza, no hago ninguna consulta personalizada aquí. Entonces no ves una consulta GraphQL o algo así. Tenemos estas citas que puede usar. Y esto atrae la publicación basada en la URL en la que se encuentra y se muestra en la página. ESTÁ BIEN. Entonces eso funciona. Pero lo que queremos hacer es agregar a la página que muestra una lista de miembros del equipo. Entonces lo construiremos ahora mismo. Lo primero que debemos hacer es crear la página.
Así que sigamos adelante y hagamos eso. Así que iré a mis páginas de carpetas aquí. Crear un sobre.tsx. Y solo crearé un componente simple para asegurarme de que esté en funcionamiento. Así que vamos a contarle sobre. Solo un componente simple reacciona. Así que solo haré un H1 por ahora. Ponlo ahí. Un poco más grande. ESTÁ BIEN. Y luego solo tenemos que exportar eso. Perfecto. ESTÁ BIEN. Así que ahora volvamos a nuestro sitio. Y haga clic en la página sobre. Y aquí está. Perdimos nuestra barra de navegación y sótano. Así que sigamos adelante y hagamos esto para trabajar, porque es bastante simple. Ya tenemos un componente de aspecto en el proyecto, por lo que lo usaré. ESTÁ BIEN. Tengo que importar ese componente y debería ser bueno. Salva eso. Muy bien, aquí estamos. Terminó con un espacio. ESTÁ BIEN. Así que ahora tenemos nuestro encabezado y todo, para que podamos navegar, lo cual es genial. Perfecto. OK. Entonces, ahora lo que queremos hacer es crear un tipo de contenido personalizado. Entonces, vio en el sitio web del desarrollador cuando creé esos videos, utilicé los campos personalizados avanzados, la interfaz de usuario de tipo postalizada personalizada y luego una extensión para el GRAPHQL WP para campos personalizados avanzados. Y luego, la interfaz que tuvimos para crear ese tipo de contenido no era tan bueno, tenía muchas cosas que simplemente no tienen sentido en un escenario sin cabeza. Entonces, lo que queríamos hacer era crear algo que nos permitiera tener una experiencia sin cabeza simplificada para crear tipos de contenido personalizados. Así que verifiquemos esto en WordPress. Aqui estamos.
Estamos en Atlas Content Modeler, con quien debería poder comenzar a jugar en este momento. La versión que ves podría ser ligeramente diferente, pero el concepto es el mismo. Así que revisemos. Cuando entro, lo primero que veo es que solo tengo un botón de inicio. Sin embargo, es muy hermoso UX. Hemos pasado algún tiempo con nuestros diseñadores para que sea una buena experiencia para crear estos tipos. Así que hago clic en Inicio y estoy listo. Solo creo un nuevo tipo de contenido o modelo de contenido. Crearemos: en la página sobre, mostraremos una lista de miembros del equipo. Así que llamemos a este miembro del equipo. Este es el género. Y luego el nombre plural será los miembros del equipo. Y obtendremos cuál es nuestro identificador API. Entonces esto es lo que aparecerá en la API REST y WP GraphQL. Y luego tenemos una descripción. Así que solo los llamaré miembros del equipo de Devrel. Y lo crearemos. Ahora, cuando lo creo, lo primero que notará es que aparece en el lado izquierdo del navegador aquí. Si hago clic en él, aún no puede hacer nada. Así que volvamos. Tengo que agregar algunos campos. Así que entraré aquí y agregaré nuestro primer campo. Entonces, tenemos muchos campos diferentes aquí desde los que podemos elegir. El primero que elegimos es solo un campo de texto normal. Y pondremos nuestro nombre allí. Entonces debemos tener el nombre de cada uno de los miembros de nuestro equipo. Haremos este campo obligatorio.
Y queremos usar esto como título de entrada. Te mostraré lo que eso significa en un segundo. Y iremos más allá y crearemos eso. Así que volvamos a los miembros de nuestro equipo y agregemos uno. Entonces, ahora, cuando hacemos clic en ADD, vemos que tenemos el campo Nombre aquí. Y solo lo completamos. Pon mi nombre. Él publica eso. Cuando voy a mi lista, veo a Matt Landers aquí. Y eso es porque hago clic en ese cuadro de validación. Vamos a comprobar de nuevo. Entonces, si ingreso ese campo, verá que escribe Use este campo como título de entrada. Este es el campo que aparecerá en la lista de todas las entradas para ese tipo de publicación personalizada. ESTÁ BIEN. Entonces, agregue más campos aquí. Entonces, si voy aquí, puedo obtener este botón Plus. Y luego tenemos todos estos diferentes tipos de campos. Entonces usé un campo de texto normal. Tenemos un texto rico, por lo que le permitirá hacer tan audaz, cursivo, cualquier cosa. Entonces, usemos esto para una de nuestras áreas. Crearemos una biografía. ESTÁ BIEN. Y luego agregue un elemento de medios para nuestra foto de perfil. Nosotros también haremos esto. Y luego volveremos a nuestro editor y lo agregaremos. Así que digamos: agregue algún texto aquí. Diré, hola, esto es Matt. Pero la atreveré y escribiré todo con italianos. Y luego lo presentaremos en el frente. También quiero cargar una foto. Ya tengo uno aquí. Y agregaré mi foto de perfil y la actualizaré. Muy bien, genial. Así que ahora iré a los miembros del equipo. Ves que solo tengo eso. Puedo agregar mi lista. Así que agregemos a algunas personas aquí. Agreguemos voluntad. Y subiré una foto aquí. Y hay voluntad. Perfecto. Él publica eso.
Y eso es todo lo que tenemos que hacer por el momento. Ahora, iremos a agregar eso. ESTÁ BIEN. Así que ahora tenemos nuestra lista. Tenemos a Will y Matt. Y vamos al modelador de contenido y veamos algo más que es realmente genial. Si pongo las elipses aquí, tengo la opción de abrir en GraphQL. Así que haré clic en eso. Esto crea automáticamente la consulta para mí que puedo ejecutar de inmediato, eso retira todo. Así que solo puedo copiar esta consulta en mi código y comenzar a retirar a los miembros del equipo. No necesito todos estos datos, así que déjame deshacerme de algunos de ellos. No necesito todos estos datos de imágenes de perfil. Solo necesito la URL, de hecho. Y ejecutaremos esto, nos aseguremos de que todo esté bien. Perfecto. ESTÁ BIEN. Copiaré esta consulta a Visual Studio. Tire hacia arriba. Y pegaremos la consulta aquí. Y solo los llamaremos miembros del equipo. Y haremos de esta una consulta GQL. Importaré esta función. Ahora tenemos nuestra pregunta, todo está aquí. Notarás que lo es, está bajo los miembros del equipo. Así que tenemos que recordar esto cada vez que eliminamos los datos. Por lo tanto, tendremos que detallar y llegar a los datos sobre los miembros de nuestro equipo. ESTÁ BIEN. Así que sigamos adelante y hagamos eso. Entonces usaremos UseQuery. Haremos todo esto del cliente para esta demostración. Se trata más del modelador de contenido y los tipos de contenido, no de generar sitios estáticos. Si quieres saberlo, tenemos muchos videos en nuestro sitio que te muestran cómo hacerlo.
Así que verifique. ESTÁ BIEN. Por lo tanto, extraeremos esos datos usando UseQuery, que es un gancho Apollo que nos permite hacer nuestra consulta GraphQL. ESTÁ BIEN. Entonces tenemos nuestros datos. Y queremos poner esto en algo más hermoso. Y lo llamaremos el equipo. Y hacer datos de miembros del equipo DOT, porque esto fue para ese identificador API y luego para nudos. ESTÁ BIEN. Y luego queremos pasar por estos y mostrarlos a todos los miembros del equipo. Hagamoslo. Entonces solo hacemos un equipo. Me aseguraré de que esté allí, porque no estará allí hasta que tenga lugar la consulta. Y luego solo haremos el mapa con puntos. Obtendremos a un miembro del equipo de él. No tengo una escritura para esto y no me preocuparé por la demostración. Pero ciertamente me gustaría crear algunos de ellos. Y te ayudaremos con eso y aquí pronto. ESTÁ BIEN. Así que solo mostremos el nombre por el momento. Así que solo haré el nombre del punto de miembro. Y debería estar bien. Vamos a comprobar. Ir a nuestro sitio. Y aquí está. Matt y aparecerá. Entonces fue muy simple. Pude ingresar al editor de modeladores de contenido, para crear un nuevo modelo de contenido, para agregar los campos que necesito. Y luego tirarlos muy rápidamente, porque logré generar esa consulta en Atlas Content Modeler. Así que lanzemos esto y hagamos que se vea más hermoso. Entonces tengo un Li. Necesito el nombre, que solo pondremos en un H2, digamos. Ni siquiera empacé esto en una UL, me di cuenta. Empácalo. Así es como no consigo la bala. ESTÁ BIEN. Asegúrate de que desaparezcan. Aquí estamos. Se ve genial.

Ahora presentemos nuestra biografía. Entonces, para nuestra biografía, tendremos que poner esto en un DIV, porque será HTML. Entonces, eliminemos esto usando el conjunto HTML peligroso, lo cual no es tan peligroso como parece, porque sabemos de dónde provienen estos datos. Si tuviera datos ingresados por el usuario, no necesariamente querría hacer esto. Pero sabemos de dónde provienen estos datos y confiamos en ellos. ESTÁ BIEN. Entonces haremos la biografía de la extremidad. Y luego tendremos nuestra imagen. No haré mucho para formatear esta imagen. En realidad, no sé cómo se verá. Y creo que la fuente será solo un miembro de la pintura del perfil de URL del artículo de los medios. Ver. Sí. La URL del artículo de los medios. ESTÁ BIEN. Perfecto. Salva eso. Regrese a nuestra página. Y aquí estamos. Y verá que obtenemos ese formato aquí y de nuestro rico texto. Así que esto es bastante genial. Entonces, de Content Modeler, podría hacer todo esto muy rápido. Si alguna vez ha hecho esto con ACF, o en tipos de publicaciones personalizadas y todo esto, la experiencia no es tan agradable y fluida como esto. Quiero decir, acabo de venir aquí. Podemos crear otro. Nombrarlo de todos modos. Solo haremos una prueba. Crea eso. Y solo para ver eso de nuevo. Entonces, quiero decir que rápidamente agregué eso aquí. Podemos agregar un campo numérico. Por ejemplo, para crear un campo de número de campo. Puede tener un número entero o decimal. Crea eso. Un booleano. Mira cómo se ve eso. Ir a las pruebas. Agregue uno nuevo. Y veremos que ahora tenemos este campo Número. Así que no puedo … permitirme ingresar números, lo cual es algo extraño. Pero tengo … hay un cuadro de texto con el número de tipo.
Y luego puedo hacer clic en ese cuadro de selección booleano. Y todo es genial. Entonces esto es genial. Entonces, lo que haremos en el futuro es agregar varios tipos de campos y continuar repitiendo esto para mejorar la experiencia. Entonces, salga y verifique esto, cree algunas cosas con él y danos comentarios sobre nuestro servidor de Discord. Y cuéntanos lo que piensas. Creo que eso realmente cambia el juego para WordPress sin cabeza. Tener la capacidad de crear tipos personalizados de contenido de una manera agradable, primero sin cabeza, con una excelente experiencia para el usuario del desarrollador que crea los tipos y el editor que ingresará el contenido, es esencial crear un excelente CMS. Así que seguramente por favor verifique. Sal y construye algunos sitios con él. Ahora, implementemos el sitio que creamos en Atlas. Entonces, lo que haremos es crear un proyecto en el portal del usuario, luego conectar nuestro repositorio y ponerlo en ejecución en Internet. Entonces, la forma en que funciona Atlas es que se conecta a su cuenta GitHub. Así que iré al portal del usuario, iré a Atlas y haré clic en crear una nueva aplicación. Cuando entro aquí, se conectará a GitHub. Ya he dado acceso al repositorio a Atlas. Así que ahora lo veo en mi lista. Aquí, cumbre 2021. Haga clic en él. Elegiré mi región, el centro de los Estados Unidos. Y luego tengo que decirle qué rama quiero usar. Usaré la rama principal. Y llamaré a mi entorno de producción. Entonces, aquí puede crear más implementaciones para un frente de Atlas. Y se basa en la rama a la que se conecta. Entonces, uso la rama principal, eso es todo lo que tengo.
Pero si tuviera una rama de desarrollo, podría crear un entorno de desarrollador. Y también puede crear muchos de estos para ramas características u otros, si desea mostrarle a alguien cómo se verá algo antes de combinarlo en relaciones públicas. También debe conectar esto a un sitio de WordPress. Entonces, ya tengo una demostración de Summit 2021. Y luego tengo que crear algunas variables de entorno. Así que vamos a tomarlos. Tengo que sacar esto del código. Entonces, si vengo aquí, tengo un archivo DOT local. La única variable de entorno para la que me preocupa esto es la próxima URL pública de WordPress. Entonces, lo que sucede aquí es que puedo darle este nombre de variable ambiental y valor, y luego estará disponible para mí durante la construcción y durante la ejecución de mi proceso de nodo. ESTÁ BIEN. Ya tengo ese sitio de WordPress. Y está en el HTTPS Summit 2021 Demo Dot WP Engine Power Dot Com. Así que sigamos adelante y creemos esa aplicación. Entonces se está creando la aplicación. Una vez listos, podremos obtener una nueva URL y verla en Internet. Así que revisemos. Entonces, veremos aquí, tenemos toda la información sobre lo que implementamos, como lo que usamos, en qué región estamos y sobre la construcción del código. Una vez que se haya construido el código, tendremos otra sección aquí para mostrar el diario de construcción. Entonces, si hay errores o algo como esto, aparecerán allí. ESTÁ BIEN. Esperaré a que se asiente y lo comprobaré. ESTÁ BIEN. Entonces nuestro sitio ha sido implementado. Y ahora tenemos una URL de que podemos hacer clic y verificar. Entonces está en wpenginepowered.com. Y aquí está. Muy rapido.
Si hago clic, veremos todos nuestros datos que vienen para nuestro tipo de contenido personalizado que creamos con Modeler. Entonces eso es genial. Así es como logramos crear un sitio pequeño. Use el modelador de contenido ATLAS para crear tipos de contenido personalizado. Y luego la implementé en la plataforma Atlas y la hice funcionar en Internet muy rápidamente. Acabamos de conectar la cuenta GitHub. Y lo que sucedió es que la plataforma extrae el código de la rama a la que dije, ejecutamos la instalación de NPM. Luego ejecutamos la compilación del tablero WPE de NPM. Esta es su oportunidad de hacer cualquier generación de archivos estáticos o lo que sea que necesite hacer. Y luego, cada vez que ejecutamos el sitio, ejecutamos NPM Start. Y tiene que funcionar en el puerto 8080. Así que eso es lo que hice. Está en funcionamiento. Y estamos listos para irnos. Ahora, lo que quiero hacer es contarle un poco sobre el motor de contenido, mostrarle una demostración y decirle lo que tenemos en el futuro. ESTÁ BIEN. Vamos a hacerlo. Lo que ves ahora es un sitio que se ejecuta en Content Engine. Respondimos nuestro sitio web de Torquemag.io en otra instalación de WordPress y conectamos el motor de contenido. Entonces, ¿cuál es el motor de contenido? Y absorbemos los datos de WordPress en Content Engine. Entonces, ahora, en el front-end, en lugar de hablar directamente con WordPress, puede hablar con Content Engine. Ahora el problema es que se distribuye a nivel mundial y es súper rápido. Entonces, en este sitio en este momento, no hay una generación estática o algo más. Solo llegamos a las páginas dinámicas y es muy rápido. Así que hagamos clic y veamos eso. Por lo tanto, puede ver eso a medida que hacemos clic, es súper rápido.
homefinance blog