1. ¿Qué es Play Framework?

Play Framework es un marco de trabajo (framework) para el desarrollo de aplicaciones web y servicios en Scala y Java. Es conocido por su arquitectura reactiva, que permite construir aplicaciones escalables y de alto rendimiento. Algunas de sus características clave incluyen:

  • Desarrollo Asíncrono y No Bloqueante: Utiliza un modelo de programación reactiva que permite manejar muchas conexiones simultáneas sin bloquear hilos.
  • Hot Reloading: Permite ver los cambios en el código en tiempo real sin necesidad de reiniciar el servidor.
  • Integración con Herramientas Modernas: Soporte para SBT (Scala Build Tool), integración con bases de datos, y soporte para pruebas.

  1. Configuración del Entorno de Desarrollo

Requisitos Previos

Antes de comenzar, asegúrate de tener instalados los siguientes componentes:

  • Java Development Kit (JDK): Play Framework requiere JDK 8 o superior.
  • Scala: Aunque Play Framework soporta Java, este curso se enfoca en Scala.
  • SBT (Scala Build Tool): Herramienta de construcción para proyectos Scala.

Instalación de SBT

Para instalar SBT, sigue las instrucciones específicas para tu sistema operativo desde la página oficial de SBT.

Creación de un Proyecto Play

  1. Crear un nuevo proyecto:

    sbt new playframework/play-scala-seed.g8
    

    Este comando crea un nuevo proyecto Play usando el arquetipo play-scala-seed.

  2. Navegar al directorio del proyecto:

    cd nombre-del-proyecto
    
  3. Iniciar el servidor Play:

    sbt run
    

    Abre tu navegador y navega a http://localhost:9000 para ver la aplicación en funcionamiento.

  1. Estructura del Proyecto Play

Un proyecto Play típico tiene la siguiente estructura de directorios:

nombre-del-proyecto/
├── app/
│   ├── controllers/
│   ├── models/
│   ├── views/
├── conf/
│   ├── application.conf
│   ├── routes
├── public/
│   ├── images/
│   ├── javascripts/
│   ├── stylesheets/
├── test/
├── build.sbt
  • app/: Contiene el código fuente de la aplicación.
    • controllers/: Controladores que manejan las solicitudes HTTP.
    • models/: Clases de modelo que representan los datos de la aplicación.
    • views/: Plantillas que generan el HTML de la aplicación.
  • conf/: Archivos de configuración.
    • application.conf: Configuración de la aplicación.
    • routes: Archivo de rutas que mapea las URL a los controladores.
  • public/: Archivos estáticos como imágenes, JavaScript y CSS.
  • test/: Pruebas de la aplicación.
  • build.sbt: Archivo de configuración de SBT.

  1. Conceptos Básicos de Play Framework

Controladores

Los controladores en Play Framework manejan las solicitudes HTTP y devuelven respuestas. Aquí hay un ejemplo básico de un controlador:

package controllers

import javax.inject._
import play.api.mvc._

@Singleton
class HomeController @Inject()(val controllerComponents: ControllerComponents) extends BaseController {

  def index() = Action { implicit request: Request[AnyContent] =>
    Ok("Hello, Play Framework!")
  }
}

Rutas

El archivo conf/routes mapea las URL a los métodos del controlador. Aquí hay un ejemplo de cómo mapear la ruta raíz (/) al método index del HomeController:

GET     /       controllers.HomeController.index

Vistas

Play Framework utiliza el motor de plantillas Twirl para generar HTML. Aquí hay un ejemplo de una vista simple:

@(message: String)

<!DOCTYPE html>
<html>
  <head>
    <title>Play Framework</title>
  </head>
  <body>
    <h1>@message</h1>
  </body>
</html>

Y el controlador que usa esta vista:

def index() = Action { implicit request: Request[AnyContent] =>
  Ok(views.html.index("Hello, Play Framework!"))
}

  1. Ejercicio Práctico

Objetivo

Crear una aplicación Play simple que muestre una lista de tareas.

Pasos

  1. Crear el modelo de datos:

    package models
    
    case class Task(id: Long, name: String)
    
  2. Crear el controlador:

    package controllers
    
    import javax.inject._
    import play.api.mvc._
    import models.Task
    
    @Singleton
    class TaskController @Inject()(val controllerComponents: ControllerComponents) extends BaseController {
    
      var tasks = List(
        Task(1, "Learn Scala"),
        Task(2, "Learn Play Framework")
      )
    
      def list() = Action { implicit request: Request[AnyContent] =>
        Ok(views.html.tasks(tasks))
      }
    }
    
  3. Configurar la ruta:

    GET     /tasks       controllers.TaskController.list
    
  4. Crear la vista:

    @(tasks: List[models.Task])
    
    <!DOCTYPE html>
    <html>
      <head>
        <title>Task List</title>
      </head>
      <body>
        <h1>Task List</h1>
        <ul>
          @for(task <- tasks) {
            <li>@task.name</li>
          }
        </ul>
      </body>
    </html>
    

Solución

Al completar los pasos anteriores, deberías tener una aplicación Play que muestra una lista de tareas en http://localhost:9000/tasks.

  1. Conclusión

En esta sección, hemos introducido Play Framework, configurado el entorno de desarrollo, explorado la estructura del proyecto y creado una aplicación simple. Play Framework es una herramienta poderosa para el desarrollo de aplicaciones web en Scala, y su arquitectura reactiva permite construir aplicaciones escalables y de alto rendimiento. En las siguientes secciones, profundizaremos en características más avanzadas y mejores prácticas para el desarrollo con Play Framework.

© Copyright 2024. Todos los derechos reservados