Guías de Make it Real
  • Introduction
  • Preparación
    • Conceptos básicos
    • El editor de texto
    • La línea de comandos
    • Git y Github
  • Git
    • Instalación y configuración
    • Conceptos y comandos esenciales
    • Ignorando archivos y carpetas
    • Trabajando con ramas
    • Repositorios remotos
    • Etiquetas
    • Reescribiendo la historia
    • Stashing
    • Github
  • HTML y CSS
    • Introducción a HTML
    • Introducción a CSS
    • Más elementos de HTML
    • Tablas
    • Formularios
    • El modelo de caja en CSS
    • Fondos (backgrounds)
    • Posicionamiento
    • Selectores CSS
    • Bordes, sombras y gradientes
    • Media Queries
    • Unidades en CSS
    • Flexbox
  • Bootstrap 3
    • Primeros pasos
    • Elementos básicos de HTML
    • Componentes
    • La grilla
    • Personalizando Bootstrap
    • Utilizando plantillas
  • Bootstrap 4
    • Primeros pasos
    • Elementos básicos de HTML
    • Componentes
    • La grilla
    • Clases utilitarias
    • Personalizando Bootstrap
  • Ruby
    • Primeros pasos
    • Tipos y operadores
    • Variables y entrada de usuario
    • Condicionales
    • Ciclos
    • Arreglos
    • Más cadenas de texto
    • Hashes
    • Métodos
    • Manipulación de archivos
    • Gemas
  • Programación Orientada a Objetos en Ruby
    • Clases y objetos
    • Métodos y atributos de clase
    • Herencia
    • Módulos
    • Excepciones
  • JavaScript I
    • Primeros pasos
    • Tipos y operadores
    • Variables
    • Condicionales
    • Ciclos
    • Arreglos
    • Más cadenas de texto
    • Funciones
    • Objetos literales
    • Manipulación de archivos
  • JavaScript en el navegador
    • Primeros pasos
    • Manipulando HTML
    • Escuchando eventos
    • Local Storage
    • History API
    • Canvas
    • Notificaciones Web
    • Audio y Video
    • Arrastrar y soltar
    • JSON
    • Realizando peticiones HTTP
  • jQuery
    • Primeros pasos
    • Manipulando HTML
    • Escuchando eventos
    • Plugins
    • Realizando peticiones con AJAX
  • JavaScript II
    • Prototipos
    • Librerías (Node.js)
    • ES6
    • Uso de this (call, apply, bind)
    • Programación funcional
    • Scope, hoisting, closures
    • Programación asincrónica
    • Testing
  • HTTP y Sinatra
    • Primeros pasos con Sinatra
    • El protocolo HTTP
    • Rutas
    • Formularios
    • Cookies y sesión
  • Bases de datos
    • Bases de datos relacionales
    • SQL
    • DDL
    • MongoDB
  • Ruby on Rails I
    • Primeros pasos
    • Arquitectura
    • Rutas
    • Layouts y rendering
    • ActiveRecord - Modelos
    • ActiveRecord - Migraciones
    • ActiveRecord - Validaciones
    • ActiveRecord - Asociaciones
    • ActiveRecord - Scopes
    • ActiveRecord - Callbacks
    • Recursos REST
    • Formularios
    • Autenticación con Devise
    • Sass y Bootstrap
    • Envío de correos
    • Carga de imágenes
    • Seeds
    • Heroku
  • Ruby on Rails II
    • Usando JavaScript (y jQuery) en Rails
    • Testing en Ruby
    • Testing en Rails
    • Creando una Web API
    • Web Sockets
  • Express.js
    • Primeros Pasos
    • El protocolo HTTP
    • Rutas
    • Vistas
    • Middlewares y manejo de errores
    • Formularios
    • Cookies y sesión
  • Express.js II
    • Mongoose
    • Web Sockets
    • Autenticación
    • Envío de correos
    • Cargar imágenes
    • Deployment
    • Testing
    • Creando una Web API
  • React
    • Primeros pasos
    • JSX
    • Componentes
    • Más sobre estado
    • Formularios
    • Peticiones HTTP con Axios
    • React Hooks
    • React Context
    • React Bootstrap
    • React Router
    • Carga de Imágenes
    • Testing
    • Estructura de carpetas
    • Componentes de clase
  • Redux
    • Primeros pasos
    • Action creators
    • Usando la librería react-redux
    • Middlewares
    • Operaciones asincrónicas con redux-thunk
    • Combinando funciones reductoras
    • Testing
    • Redux Tool Kit
  • Algoritmos
    • Describiendo un algoritmo
    • Complejidad (Big-O)
    • Estructuras de datos
    • Recursión
    • Ordenamiento
    • Búsqueda
    • Programación dinámica
  • Python
    • Primeros Pasos
    • Tipos y Variables
    • Funciones
    • Control de Flujo
    • Listas
    • Ciclos
    • Diccionarios, Tuplas y Sets
  • NumPy
    • Primeros Pasos
    • Arreglos
    • Arreglos Multidimensionales
    • Estadística con NumPy
    • Distribución Estadística
  • Pandas
    • Primeros Pasos
    • Inspección y Selección de Datos
    • Modificando Dataframes
    • La Función Lambda
    • Aggregates en Pandas
    • Múltiples Tablas
Powered by GitBook
On this page
  • Pasando información a la vista
  • Creando un layout
  1. Express.js

Vistas

PreviousRutasNextMiddlewares y manejo de errores

Last updated 2 years ago

Escribir todo el HTML dentro del código JavaScript es muy engorroso y lo que se recomienda es utilizar un motor de plantillas (template engine) que nos permita separar nuestro código HTML de nuestro código JavaScript.

Existen varios motores de plantillas como , y . Como ilustración vamos a usar en este capítulo.

El primer paso es instalar el motor de plantillas utilizando npm o yarn. Por ejemplo, para instalar con yarn ejecutaríamos el siguiente comando:

$ yarn add pug --dev

El segundo paso es configurar el motor de plantillas y la carpeta donde se van a almacenar las vistas. Por ejemplo, para configurar y la carpeta views agregaríamos las siguiente dos líneas en nuestra aplicación después de definir la variable app:

app.set('view engine', 'pug');
app.set('views', 'views');

Para crear una vista debes crear un archivo con extensión .pug en la carpeta views (o la que hayas configurado).

utiliza una sintaxis similar a HTML pero más compacta. Veamos un ejemplo. Crea un archivo llamado index.pug en la carpeta views con el siguiente contenido:

html
  head
    title Vista con Pug
  body
    h1 Esta es mi primera vista con Pug

Para utilizar esta vista desde una ruta debemos usar el método res.render. Agrega la siguiente ruta al archivo app.js:

app.get('/', (req, res) => {
  res.render('index');
});

Fíjate que no es necesario agregar la extensión del archivo, Express ya sabe cuál es.

Pasando información a la vista

También es posible pasar información desde la ruta a la vista. Por ejemplo, si queremos pasar el texto que va en el title y el h1 desde la ruta podemos hacer lo siguiente:

html
  head
    title= title
  body
    h1= message

Y pasarle esas variables title y message desde la ruta:

app.get('/', (req, res) => {
  res.render('index', { title: "Variables en Pug", message: "Ya sé pasar info a la vista" });
});

Si reinicias el servidor y refrescas la página deberías ver el texto "Ya sé pasar info a la vista" y el título de la pestaña debería ser "Variables en Pug".

Creando un layout

Esta información es específica de Pug. Para ver cómo se hace en otros motores de plantillas debes consultar su documentación.

Existen elementos que se repiten en todas las páginas como la estructura básica de HTML, el menú principal, etc. (a esto se le conoce como un layout). Con Pug puedes crear un archivo con estos elementos y reutilizarlo en tus vistas.

Por ejemplo, crea un archivo llamado layout.pug dentro de la carpeta views con el siguiente contenido:

html
  head
    title Mi super página
  body
    block content

La línea block content se va a reemplazar con el código de cada vista. Ahora vamos a crear una vista llamada index.pug (también en la carpeta views) que va a "extender" el layout que acabamos de crear:

extends layout.pug

block content
  h1 Hola Mundo

Todo lo que se encuentre debajo de block content se va a reemplazar en el layout donde esté definido el bloque con el mismo nombre.

Puedes tener varios bloques si es necesario.

Inicia el servidor e ingresa desde un navegador a . Deberías ver el texto "Esta es mi primera vista con Pug" y el título de la pestaña debería ser "Vista con Pug".

Pug
Mustache
EJS
Pug
Pug
Pug
Pug
http://localhost:3000/