Desarrollo de Aplicaciones Web con ASP.NET Core

Desarrollo de Aplicaciones Web con ASP.NET Core

Compartir

Las aplicaciones web son una parte fundamental del paisaje digital actual y desempeñan un papel crucial en una variedad de sectores, desde el comercio electrónico hasta la educación y más allá. En este capítulo, exploraremos el emocionante mundo del desarrollo de aplicaciones web con ASP.NET Core, un marco de trabajo versátil y potente desarrollado por Microsoft.

ASP.NET Core: Un Framework de Desarrollo Web de Código Abierto y Multiplataforma

ASP.NET Core es un poderoso y versátil framework de desarrollo web de código abierto creado por Microsoft. A diferencia de su predecesor, ASP.NET, ASP.NET Core es multiplataforma y está diseñado para ser altamente modular y eficiente. En este capítulo, exploraremos las características fundamentales de ASP.NET Core y cómo puedes aprovecharlo para crear aplicaciones web modernas y robustas.

Características Clave de ASP.NET Core:

  1. Multiplataforma: Una de las características más destacadas de ASP.NET Core es su capacidad para funcionar en múltiples plataformas, incluyendo Windows, Linux y macOS. Esto significa que puedes desarrollar y alojar aplicaciones web ASP.NET Core en una variedad de sistemas operativos, lo que aumenta la flexibilidad de implementación.
  2. Código Abierto: ASP.NET Core es un proyecto de código abierto respaldado por Microsoft y una comunidad activa de desarrolladores. Esto significa que tienes acceso al código fuente y puedes contribuir a su mejora, además de aprovechar las actualizaciones y correcciones de errores continuas.
  3. Alto Rendimiento: ASP.NET Core está diseñado para ser altamente eficiente y escalable. Utiliza el servidor web Kestrel, que es rápido y liviano. Además, ofrece características como la ejecución en paralelo de solicitudes, lo que mejora el rendimiento y la capacidad de respuesta de tu aplicación.
  4. Modularidad: ASP.NET Core se basa en una arquitectura modular. Esto significa que puedes incluir solo los componentes necesarios para tu aplicación, lo que resulta en un menor consumo de recursos y una aplicación más ligera.
  5. Soporte para Contenedores: ASP.NET Core se integra de manera perfecta con tecnologías de contenedorización como Docker. Puedes empaquetar y distribuir aplicaciones ASP.NET Core en contenedores, lo que facilita la implementación y la administración de tus aplicaciones en entornos de contenedores.
  6. Lenguajes de Programación: Aunque ASP.NET Core se asocia principalmente con C#, también es compatible con F# y Visual Basic.NET. Esto te brinda la flexibilidad de elegir el lenguaje de programación que mejor se adapte a tus necesidades.
  7. Framework Web Moderno: ASP.NET Core es compatible con las prácticas de desarrollo web modernas, como el patrón Modelo-Vista-Controlador (MVC), el desarrollo de API RESTful y la autenticación flexible. Esto facilita la creación de aplicaciones web de vanguardia.

ASP.NET Core es una elección sólida para desarrolladores que desean crear aplicaciones web de alto rendimiento y escalables, y su capacidad de ejecución en múltiples plataformas lo hace especialmente atractivo en un mundo cada vez más diverso de sistemas operativos

Creación de Aplicaciones Web:

  • Pasos para crear una aplicación web en ASP.NET Core.
  • Configuración de rutas y controladores.
  • Creación de vistas y páginas web.

Para crear una aplicación web en ASP.NET Core, sigue estos pasos:

Paso 1: Instalar las Herramientas de Desarrollo

Si aún no tienes las herramientas de desarrollo de ASP.NET Core instaladas, debes realizar esta instalación. Puedes descargar e instalar Visual Studio Community Edition, que es gratuito y completo para el desarrollo de aplicaciones web con ASP.NET Core, o puedes usar Visual Studio Code, que es un editor de código ligero y gratuito.

Paso 2: Crear un Nuevo Proyecto ASP.NET Core

  • Abre Visual Studio o Visual Studio Code.
  • En Visual Studio, ve a «Archivo» (File) > «Nuevo» (New) > «Proyecto» (Project). En Visual Studio Code, abre la terminal y crea una nueva carpeta para tu proyecto.
  • Selecciona la plantilla de proyecto ASP.NET Core que desees utilizar. Puedes elegir entre plantillas como «Aplicación web de MVC», «API web», «Aplicación web vacía», entre otras, según el tipo de aplicación que desees crear.
  • Especifica un nombre y una ubicación para tu proyecto y luego haz clic en «Crear» (Create) en Visual Studio o usa los comandos apropiados en Visual Studio Code para crear el proyecto.

Paso 3: Configurar y Personalizar la Aplicación

  • Una vez que se haya creado el proyecto, puedes configurar y personalizar la aplicación según tus necesidades. Esto puede incluir la configuración de enrutamiento, la definición de modelos, vistas y controladores, la configuración de autenticación y autorización, entre otras tareas.

Paso 4: Desarrollar la Aplicación

  • Comienza a desarrollar tu aplicación web escribiendo código en los archivos correspondientes. Si estás utilizando Visual Studio, puedes aprovechar las características de IntelliSense y depuración integradas para facilitar el desarrollo.

Paso 5: Compilar y Ejecutar la Aplicación

  • Para compilar y ejecutar la aplicación, simplemente presiona F5 en Visual Studio o usa el comando de ejecución en Visual Studio Code. Esto iniciará la aplicación en un servidor web local y la abrirá en tu navegador predeterminado.

Paso 6: Probar y Depurar la Aplicación

  • Prueba tu aplicación en el navegador y realiza pruebas para asegurarte de que funcione correctamente. Si encuentras errores, puedes depurar la aplicación utilizando las herramientas de depuración disponibles en tu entorno de desarrollo.

Paso 7: Implementar la Aplicación en un Servidor

  • Una vez que tu aplicación esté lista para ser publicada, debes implementarla en un servidor web real. Esto puede involucrar la configuración de un servidor, la implementación de medidas de seguridad y la gestión de la escalabilidad, dependiendo de tus necesidades.

Paso 8: Mantenimiento Continuo

  • Realiza un mantenimiento continuo de tu aplicación, lo que incluye la corrección de errores, la actualización de dependencias y la incorporación de nuevas características según sea necesario.

Estos son los pasos generales para crear una aplicación web en ASP.NET Core. Ten en cuenta que los detalles específicos pueden variar según el tipo de proyecto y las herramientas que utilices.

Configurar rutas y controladores

Configurar rutas y controladores es una parte esencial del desarrollo de aplicaciones web con ASP.NET Core, especialmente cuando se utiliza el patrón de diseño Model-View-Controller (MVC). Aquí tienes los pasos generales para configurar rutas y controladores en una aplicación ASP.NET Core:

Paso 1: Crear un Controlador

  • En tu proyecto ASP.NET Core, crea un nuevo controlador o usa uno existente. Los controladores son responsables de manejar las solicitudes HTTP y controlar la lógica de la aplicación.
  • Los controladores en ASP.NET Core suelen heredar de la clase Controller y deben estar ubicados en el directorio Controllers de tu proyecto.

Paso 2: Definir Acciones en el Controlador

  • En el controlador, define métodos públicos llamados «acciones». Estas acciones son responsables de procesar las solicitudes HTTP y pueden realizar tareas como recuperar datos, realizar operaciones y devolver vistas.
  • Las acciones se pueden decorar con atributos de enrutamiento para especificar cómo deben coincidir las rutas de las solicitudes HTTP con las acciones. Por ejemplo, puedes usar el atributo [HttpGet] para indicar que una acción debe responder a solicitudes GET.

Paso 3: Configurar el Enrutamiento

  • Abre el archivo Startup.cs en tu proyecto ASP.NET Core. En este archivo, encontrarás el método Configure en la clase Startup. Aquí es donde se configura el enrutamiento.
  • Utiliza el servicio app.UseEndpoints para definir las rutas y asignarlas a los controladores y acciones correspondientes. Puedes utilizar el método MapControllerRoute para configurar rutas basadas en controladores y acciones.
app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
});

En el ejemplo anterior, se establece una ruta predeterminada que utiliza el controlador «Home» y la acción «Index». Esto significa que cuando los usuarios accedan a la raíz de la aplicación, se ejecutará la acción «Index» del controlador «Home».

Paso 4: Crear Vistas

  1. Las vistas son responsables de mostrar la interfaz de usuario y generalmente se encuentran en el directorio Views. Crea vistas correspondientes a las acciones en tus controladores.

Paso 5: Ejecutar y Probar la Aplicación

  1. Ejecuta la aplicación y prueba las rutas configuradas. Puedes navegar a las URL correspondientes a las acciones de tus controladores y ver cómo se procesan las solicitudes.

Configurar rutas y controladores en ASP.NET Core permite crear aplicaciones web con una estructura organizada y proporciona un enfoque basado en controladores para manejar las solicitudes HTTP y presentar vistas al usuario. A medida que tu aplicación crezca, podrás definir rutas adicionales y configurar la lógica de controlador necesaria para implementar funcionalidades específicas.

Creación de Vistas:

Crear vistas y páginas web en ASP.NET Core es fundamental para presentar la interfaz de usuario de tu aplicación web. Aquí te explico los pasos generales para crear vistas y páginas web en ASP.NET Core:

  • En tu proyecto ASP.NET Core, ve al directorio Views. Normalmente, encontrarás una subcarpeta llamada Shared para almacenar vistas compartidas y subcarpetas adicionales para controladores específicos.
  • Dentro de la subcarpeta correspondiente al controlador (o en Shared si es compartida), crea un archivo con extensión .cshtml. Por ejemplo, si tienes un controlador llamado HomeController, puedes crear una vista llamada MiVista.cshtml.
  • En la vista .cshtml, puedes escribir código HTML y C# para definir la estructura y el contenido de la página web. ASP.NET Core utiliza el motor de vistas Razor, que te permite combinar HTML y C# de manera sencilla.

Ejemplo de una vista Razor simple:

<!DOCTYPE html>
<html>
<head>
    <title>Mi Vista</title>
</head>
<body>
    <h1>Bienvenido a mi aplicación web</h1>
    <p>Esta es una página de ejemplo.</p>
</body>
</html>

Uso de Datos en las Vistas:

  1. Las vistas pueden mostrar datos desde el controlador. Para ello, puedes utilizar el modelo de vista. Define un modelo para tu vista y pásalo desde el controlador a la vista.
public IActionResult MiAccion()
{
    var modelo = new MiModelo(); // Crea un modelo o recupera datos de alguna fuente.
    return View(modelo);
}
2.	En la vista, puedes acceder a las propiedades del modelo de vista utilizando la sintaxis de Razor.
<p>Nombre: @Model.Nombre</p>
<p>Edad: @Model.Edad</p>

Creación de Páginas Web:

  • ASP.NET Core también admite la creación de páginas web utilizando el modelo de Razor Pages. Puedes crear carpetas con el nombre de la página en el directorio Pages. Por ejemplo, si deseas crear una página llamada MiPagina.cshtml, crea una carpeta llamada MiPagina y coloca la página dentro de ella.
  • En las páginas Razor, puedes utilizar el mismo enfoque que en las vistas para definir la estructura y el contenido de la página. También puedes definir modelos de página para trabajar con datos.
  • Las páginas Razor permiten un enrutamiento más sencillo, ya que el nombre de la página se convierte automáticamente en la URL.

Ejemplo: Creación de un Blog Personal con ASP.NET Core:

  • Diseño de una aplicación web que permita a los usuarios escribir y publicar blogs.
  • Creación de rutas, controladores y vistas para el blog.

Crear un blog personal con ASP.NET Core es un proyecto interesante que implica el diseño de una aplicación web completa. A continuación, se presentan los pasos generales para crear un blog personal con rutas, controladores y vistas en ASP.NET Core:

Paso 1: Creación de un Proyecto ASP.NET Core

  • Abre Visual Studio o tu entorno de desarrollo preferido.
  • Crea un nuevo proyecto ASP.NET Core utilizando la plantilla «Aplicación web de ASP.NET Core» o «Aplicación web de ASP.NET Core (Modelo de páginas Razor)» si deseas utilizar Razor Pages.

Paso 2: Diseño de la Base de Datos

  • Decide cómo deseas almacenar las entradas del blog. Puedes utilizar una base de datos relacional como SQL Server o SQLite.
  • Crea un modelo de datos que represente las entradas del blog. Por ejemplo:
public class EntradaBlog
{
    public int Id { get; set; }
    public string Titulo { get; set; }
    public string Contenido { get; set; }
    public DateTime FechaPublicacion { get; set; }
    // Otras propiedades, como el autor, las etiquetas, etc.
}
  • Configura la base de datos y utiliza Entity Framework Core para crear las migraciones y aplicarlas a la base de datos.

Paso 3: Creación de Controladores

  • Crea un controlador de ASP.NET Core que gestionará las acciones relacionadas con el blog, como la visualización de entradas, la creación de nuevas entradas y la edición de entradas existentes.
public class BlogController : Controller
{
    private readonly ApplicationDbContext _context;

    public BlogController(ApplicationDbContext context)
    {
        _context = context;
    }

    public IActionResult Index()
    {
        var entradas = _context.Entradas.ToList(); // Recupera todas las entradas desde la base de datos.
        return View(entradas);
    }

    // Agregar acciones para crear, editar y eliminar entradas.
}

Paso 4: Creación de Vistas

  • Crea vistas Razor para mostrar las entradas del blog y permitir a los usuarios crear y editar entradas.
  • Utiliza HTML y la sintaxis de Razor para diseñar las páginas web. Por ejemplo, crea una vista llamada Index.cshtml para mostrar todas las entradas del blog y una vista llamada Crear.cshtml para permitir a los usuarios crear nuevas entradas.

Paso 5: Configuración de Rutas

  • Configura las rutas en el archivo Startup.cs para que las URL de tu aplicación estén relacionadas con las acciones del controlador del blog.
app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "blog",
        pattern: "blog/{action}/{id?}",
        defaults: new { controller = "Blog", action = "Index" });
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
});

Paso 6: Prueba y Publicación

  • Ejecuta la aplicación en tu entorno de desarrollo para probarla. Asegúrate de que todas las funciones del blog funcionen correctamente.
  • Cuando estés satisfecho con la aplicación, puedes publicarla en un servidor web para que esté disponible en línea.

Uso de Bootstrap para Diseño Web:

Utilizar Bootstrap para el diseño web es una excelente manera de crear interfaces de usuario atractivas y receptivas en aplicaciones web ASP.NET Core. Bootstrap es un framework de diseño front-end que proporciona una serie de clases y componentes predefinidos que facilitan la creación de páginas web con un aspecto profesional y adaptado a dispositivos móviles. A continuación, se muestra cómo puedes integrar Bootstrap en tu proyecto ASP.NET Core:

Paso 1: Configurar Bootstrap

  • Abre tu proyecto ASP.NET Core en Visual Studio o el entorno de desarrollo que estés utilizando.
  • En el proyecto, abre la carpeta wwwroot si tienes una, o crea una si no existe. Esta carpeta es donde se almacenan los archivos estáticos, como CSS y JavaScript.
  • Dentro de la carpeta wwwroot, crea una nueva carpeta llamada lib. Esta carpeta se utilizará para almacenar las bibliotecas externas, como Bootstrap.
  • Descarga Bootstrap desde el sitio web oficial de Bootstrap (https://getbootstrap.com/). Puedes descargar la versión compilada o utilizar un administrador de paquetes como npm si estás utilizando una versión de desarrollo de Bootstrap.
  • Una vez descargado, copia los archivos CSS y JavaScript de Bootstrap en la carpeta lib. Deberías tener algo similar a esto:
wwwroot
└── lib
    ├── bootstrap.min.css
    └── bootstrap.min.js

Paso 2: Enlazar Bootstrap a tus Vistas Razor

  • Abre una de tus vistas Razor, por ejemplo, Views/Shared/_Layout.cshtml.

Enlaza los archivos CSS y JavaScript de Bootstrap en el encabezado de tu página antes de enlazar tus archivos CSS y JavaScript personalizados. Agrega las siguientes líneas dentro del elemento <head>:

<link rel="stylesheet" href="~/lib/bootstrap.min.css" />
<script src="~/lib/bootstrap.min.js"></script>
  • Asegúrate de que estas líneas estén antes de las líneas que enlazan tus propios archivos CSS y JavaScript personalizados.

Paso 3: Utilizar Clases y Componentes de Bootstrap

  • Ahora puedes comenzar a utilizar las clases y componentes de Bootstrap en tus vistas Razor para diseñar tu interfaz de usuario. Por ejemplo, puedes utilizar clases como container, row, col, btn, alert, entre otras, para dar estilo y diseño a tus elementos HTML.
  • Consulta la documentación oficial de Bootstrap para obtener información detallada sobre cómo utilizar sus clases y componentes: https://getbootstrap.com/docs/5.0/getting-started/introduction/

Paso 4: Prueba y Ajustes

  • Ejecuta tu aplicación ASP.NET Core y comprueba cómo se ve y se comporta con Bootstrap.
  • Realiza ajustes según sea necesario para adaptar Bootstrap a tus necesidades específicas de diseño.

Integrar Bootstrap en tu proyecto ASP.NET Core te permitirá aprovechar un conjunto de herramientas poderosas para crear una interfaz de usuario moderna y receptiva sin tener que escribir una gran cantidad de CSS y JavaScript personalizado.

Utilizar clases y componentes de Bootstrap es una excelente manera de crear interfaces de usuario atractivas y receptivas en aplicaciones web ASP.NET Core. Bootstrap proporciona una serie de clases y componentes predefinidos que facilitan la creación de páginas web con un aspecto profesional y adaptado a dispositivos móviles. A continuación, te mostraré algunos ejemplos de cómo utilizar clases y componentes de Bootstrap en tus vistas Razor para diseñar una interfaz de usuario atractiva:

1. Contenedor Principal:

Utiliza la clase container para crear un contenedor principal que alinea y ajusta automáticamente el contenido en el centro de la página. Ejemplo:

<div class="container">
    <!-- Contenido de tu página aquí -->
</div>

2. Filas y Columnas:

Bootstrap utiliza un sistema de cuadrícula basado en filas (row) y columnas (col) que facilita la creación de diseños flexibles. Puedes especificar el tamaño de las columnas utilizando las clases col-*, donde * es el número de columnas que ocupará. Ejemplo:

<div class="row">
    <div class="col-md-6">
        <!-- Contenido de la primera columna -->
    </div>
    <div class="col-md-6">
        <!-- Contenido de la segunda columna -->
    </div>
</div>

3. Botones:

Bootstrap ofrece clases para estilizar botones de manera atractiva. Puedes usar clases como btn y btn-primary para crear botones con estilos predefinidos. Ejemplo:

<button class="btn btn-primary">Aceptar</button>
<button class="btn btn-danger">Cancelar</button>

4. Alertas:

Puedes mostrar mensajes de alerta utilizando las clases de Bootstrap. Por ejemplo, para una alerta de éxito:

<div class="alert alert-success" role="alert">
    ¡Operación exitosa!
</div>

5. Formularios:

Bootstrap proporciona clases para estilizar formularios y campos de entrada. Puedes utilizar clases como form-group, form-control, btn, entre otras, para diseñar formularios atractivos. Ejemplo:

<form>
    <div class="form-group">
        <label for="nombre">Nombre:</label>
        <input type="text" class="form-control" id="nombre">
    </div>
    <button type="submit" class="btn btn-primary">Enviar</button>
</form>

Estos son solo algunos ejemplos de cómo puedes utilizar clases y componentes de Bootstrap en tus vistas Razor para diseñar una interfaz de usuario atractiva. Bootstrap ofrece una amplia gama de opciones de diseño y estilo que puedes explorar en su documentación oficial:
https://getbootstrap.com/docs/5.0/getting-started/introduction/

Resumen:

En este capítulo, exploramos el desarrollo de aplicaciones web con ASP.NET Core y la importancia de utilizar Bootstrap para crear diseños web atractivos y responsivos. Algunos de los puntos clave que cubrimos incluyen:

  1. ASP.NET Core: Presentamos ASP.NET Core como un framework de desarrollo web de código abierto y multiplataforma. Discutimos sus ventajas, que incluyen alto rendimiento y modularidad.
  2. Creación de Proyecto Web: Explicamos cómo crear un proyecto de aplicación web ASP.NET Core y los pasos básicos para configurarlo.
  3. Rutas y Controladores: Introdujimos el concepto de rutas y controladores en ASP.NET Core, que son fundamentales para el enrutamiento y la gestión de solicitudes HTTP.
  4. Vistas y Páginas Web: Destacamos la creación de vistas y páginas web en ASP.NET Core y cómo estas se utilizan para presentar información al usuario.
  5. Ejemplo Práctico: Blog Personal: Creamos una aplicación web que permite a los usuarios escribir y publicar blogs, lo que ilustra el uso de rutas, controladores y vistas.
  6. Uso de Bootstrap: Introdujimos Bootstrap como un framework de diseño web front-end y explicamos cómo usar clases y componentes de Bootstrap para crear interfaces de usuario atractivas y responsivas.

Este capítulo sienta las bases para el desarrollo de aplicaciones web en ASP.NET Core y proporciona las habilidades necesarias para diseñar interfaces de usuario profesionales y atractivas utilizando Bootstrap. En capítulos posteriores, profundizaremos en aspectos adicionales del desarrollo web con ASP.NET Core.

Ejemplo: «Mejora el diseño de la aplicación de blog personal utilizando Bootstrap para crear una experiencia de usuario más atractiva.»

Me gustaría proporcionarte un ejemplo básico de cómo puedes mejorar el diseño de tu aplicación de blog personal utilizando Bootstrap. Sin embargo, ten en cuenta que la implementación real dependerá de la estructura y el código específico de tu aplicación. Aquí tienes un ejemplo simple utilizando HTML y Bootstrap para mostrar cómo puedes aplicar Bootstrap a tu proyecto:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Mi Blog Personal</title>
    <!-- Agrega los enlaces a los archivos CSS de Bootstrap -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
    <!-- Barra de navegación Bootstrap -->
    <nav class="navbar navbar-expand-lg navbar-light bg-light">
        <a class="navbar-brand" href="#">Mi Blog</a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse" id="navbarNav">
            <ul class="navbar-nav">
                <li class="nav-item active">
                    <a class="nav-link" href="#">Inicio <span class="sr-only">(current)</span></a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="#">Categorías</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="#">Acerca de</a>
                </li>
            </ul>
        </div>
    </nav>

    <!-- Contenido principal -->
    <div class="container mt-5">
        <div class="row">
            <div class="col-md-8">
                <h1>Mi Blog</h1>
                <div class="card mb-3">
                    <img src="imagen1.jpg" class="card-img-top" alt="Imagen de la publicación">
                    <div class="card-body">
                        <h5 class="card-title">Título de la Publicación</h5>
                        <p class="card-text">Descripción de la publicación. Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
                        <a href="#" class="btn btn-primary">Leer más</a>
                    </div>
                </div>
                <!-- Más publicaciones aquí -->
            </div>
            <div class="col-md-4">
                <!-- Barra lateral con widgets, por ejemplo, categorías, publicaciones recientes, etc. -->
            </div>
        </div>
    </div>

    <!-- Agrega los enlaces a los archivos JavaScript de Bootstrap -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</body>
</html>

En este ejemplo:

  • Hemos incluido los enlaces a los archivos CSS y JavaScript de Bootstrap desde un CDN.
  • Utilizamos la barra de navegación de Bootstrap para la navegación del sitio.
  • El contenido principal se coloca en un contenedor Bootstrap y se utiliza una tarjeta de Bootstrap para mostrar publicaciones individuales.

Compartir

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *