CursosEmpresasBlogLiveConfPrecios

Creación del servidor en Express

Clase 5 de 22 • Curso de Server Side Render con Express

Contenido del curso

Conocimientos necesarios para aplicar SSR

  • 1
    Lo que aprenderás sobre server side render

    Lo que aprenderás sobre server side render

    01:13 min
  • 2
    Presentación del proyecto del curso y sus herramientas

    Presentación del proyecto del curso y sus herramientas

    01:52 min
  • 3
    ¿Qué es Server Side Rendering?

    ¿Qué es Server Side Rendering?

    04:36 min

Preparando entorno para aplicar SSR

  • 4
    Actualizando dependencias en NPM

    Actualizando dependencias en NPM

    05:18 min
  • 5
    Creación del servidor en Express

    Creación del servidor en Express

    Viendo ahora
  • 6
    Usando Nodemon y Dotenv

    Usando Nodemon y Dotenv

    05:31 min
  • 7
    Integración de Webpack con Express

    Integración de Webpack con Express

    13:10 min

Integración de Express con React

  • 8
    Servir React con Express

    Servir React con Express

    05:25 min
  • 9
    Abstrayendo React Router, creando history y haciendo initialState más accesible

    Abstrayendo React Router, creando history y haciendo initialState más accesible

    12:01 min

Aplicar Server Side Rendering

  • 10
    Definición de la función principal para realizar el renderizado desde el servidor

    Definición de la función principal para realizar el renderizado desde el servidor

    11:59 min
  • 11
    Assets require hook

    Assets require hook

    04:15 min
  • 12
    Hydrate y estado de Redux desde Express

    Hydrate y estado de Redux desde Express

    09:18 min

Trabaja con entornos de desarrollo y producción

  • 13
    Configurando nuestro servidor para producción

    Configurando nuestro servidor para producción

    07:02 min
  • 14
    Configurando webpack para producción

    Configurando webpack para producción

    11:28 min
  • 15
    Optimización del Build

    Optimización del Build

    09:07 min
  • 16
    Aplicar hashes al nombre de nuestros builds

    Aplicar hashes al nombre de nuestros builds

    10:40 min

Buenas prácticas de Server Side Render

  • 17
    Vendorfiles en Webpack: definiendo cacheGroups

    Vendorfiles en Webpack: definiendo cacheGroups

    03:54 min
  • 18
    Vendorfiles en Webpack: generando el vendorfile

    Vendorfiles en Webpack: generando el vendorfile

    07:19 min
  • 19
    Configuración de ESLint

    Configuración de ESLint

    10:45 min

Alternativas al SSR con Express

  • 20
    Cómo implementar Next.js

    Cómo implementar Next.js

    05:58 min
  • 21
    Cómo usar Gatsby.js

    Cómo usar Gatsby.js

    04:02 min
  • 22
    Cuando usar cada una de las herramientas presentadas

    Cuando usar cada una de las herramientas presentadas

    02:55 min
Tomar examen

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads
        Nelson Cadenas

        Nelson Cadenas

        student•
        hace 6 años

        ++Resumen de la Clase++

        1. Creamos 2 carpetas dentro de la carpeta src, src/server: fuentes con toda la lógica relacionada con el servidor src/frontend: fuentes con toda la lógica relacionada con la app.

        2. Movemos todos los archivos de nuestra app en react ubicada actualmente en la carpeta src, hacia src/frontend.

        3. Creamos en la carpeta src/server 2 archivos, index.js y server.js.

        4. Instalamos la siguiente dependencia: npm install @babel/register

        5. En el archivo src/server/index.js, agregamos la siguiente configuración: require('@babel/register')({ presets: ['@babel/preset-env', '@babel/preset-react'], }) require('./server')

        6. Instalamos más dependencias: npm install express dotenv.

        7. Express sirve para poder instalar nuestro servidor local y dotenv se utiliza para manejar nuestras variables de entorno.

        8. Agregamos todo el código necesario para correr el servidor de express en el archivo src/server/server.js.

        9. Creamos un nuevo script en el archivo package.json, para poder ejecutar nuestro servidor: "scripts": { "start:dev" : "node src/server/index" }

        10. Ejecutamos nuestro servidor desde la consola con: npm run start:dev.

        11. Desde el navegador de Google Chrome, ingremos a la dirección 127.0.0.1:3000 o localhost:3000 para verificar que esta funcionando nuestro servidor de express.

          Javier Armando Vargas Vega

          Javier Armando Vargas Vega

          student•
          hace 6 años

          Muy buen resumen. Muchas gracias por el aporte.

          Irungaray Agustin

          Irungaray Agustin

          student•
          hace 6 años

          Gracias por tus aportes, los guardo porque seguro van a ser de utilidad!

        Sergio Perez

        Sergio Perez

        student•
        hace 6 años

        Comparto mis apuntes, se agradece feedback 👍:

        • Primero tenemos dividir el frontend y el server se hace creando una carpeta para cada uno en src y colocamos los respectivos archivos en su respectiva carpeta

        • en la carpeta de server creamos dos archivos que sera el index.js que sera donde vamos a tener el entry point para que la aplicacion pueda funcionar y el server.js donde tendremos el servidor con express

        • instalamos una nueva dependencia para usar babel en el servidor

          • npm install @babel/register lo que hace es un buind a nuestro entorno para usar los presets de babel en el servidor
        • en index.js del server lo primero que hacemos es requerir el paquete de @babel/register y lo que va a hacer es llamar una configuracion que vamos a indicarse la indicamos dentro de un objeto con la configuracion que necesitamos

          require('@babel/register')({ presets:[ '@babel/preset-env', '@babel/preset-react' ] })
        • luego llamamos nuestro archivo server que es donde tendremos toda la logica que estaremos haciendo

        • luego instalamos express y dotenv

        • en el archivo del servidor, osea server.js importamos express desde express y definimos una aplicacion llamando a express

        • llamamos a la aplicacion que acabamos de definir y utilizamos el metodo get('') que sera el tipo de ruta que vamos a estar llamando, en el get le indicamos que tipo de ruta estamos llamando le pasamos '*' que quiere decir que vamos a recibir todas las rutas, como segundo parametro le pasamos una funcion anonima que recibira un request y un response, dentro de esta funcion enviaremos una respuesta al usuario que en este caso sera un JSON que llamara a un hello y retornara express

          import express from 'express' //importamos express const app = express(); app.get('*', (req, res) => { res.send({ hello: 'express' }); });
        • Por ultimo tenemos indicarle en que puerto va a correr nuestro servidor utilizando la funcion listen que recibe como parametros el puerto y un manejo de error

          app.listen(3000, (err) => { if (err) console.error(); else console.log('Server running on port: 3000'); })
        • Luego creamos un nuevo script para ejecutar nuestro servidor que era de la siguiente forma

          "start:dev": "node src/server/index"
        Daniel Hernández

        Daniel Hernández

        student•
        hace 6 años
        npm i @babel/register -D

        o

        npm install @babel/register --save-dev

        las 2 formas son lo mismo

        Camilo José Mezú Mina

        Camilo José Mezú Mina

        student•
        hace 6 años

        ¿Babel Register debería ser dependencia de desarrollo?

          Erik Elyager

          Erik Elyager

          student•
          hace 6 años

          Así es, solo de desarrollo.

        Nicolas Esteban Manograsso

        Nicolas Esteban Manograsso

        student•
        hace 5 años

        Paquetes de esta clase npm install @babel/register express dotenv

        HUGO ANDRES DIAZ BERNAL

        HUGO ANDRES DIAZ BERNAL

        student•
        hace 6 años

        Cuando cambiamos la ubicación de los archivos en la carpeta frontend, nuestro npm run start no podrá encontrar nuestra raíz, eso nos afecta, hay que cambiar las rutas para arreglarlo o no es necesario?

          Alejandro Daniel Oroncoy Almeyda

          Alejandro Daniel Oroncoy Almeyda

          student•
          hace 6 años

          Si nos afecta, pero se puede arreglar cambiando la raíz de nuestro proyecto, en webpack.config.js, cambiando el entry por

          entry: './src/frontend/index.js'

          Luego vuelve a la terminal y corre el comando npm run start, y no debería de haber problema!

        Daniel Hernández

        Daniel Hernández

        student•
        hace 6 años

        otra manera de escribirlo...

        app.listen(3000, (error) => { error ? console.log(error) : console.log('Server running on 3000 port'); });
          Enrique Moreno

          Enrique Moreno

          student•
          hace 6 años

          y otra más simple seria:

          app.listen(3000, (error) => console.error(error || 'Server on port 3000'));
        Jose Daniel Molina

        Jose Daniel Molina

        student•
        hace 6 años

        Index.js

        carbon.png
        server.js
        carbon (1).png

        Camilo José Mezú Mina

        Camilo José Mezú Mina

        student•
        hace 6 años

        ¿No deberían instalarse los paquetes del servidor aparte? osea en la carpeta del server y no en la general del proyecto

        José Agüero

        José Agüero

        student•
        hace 3 años

        Quiero hacer una consulta respecto a Express como api, he montado con Nuxt.js el módulo (npm i rss) para generar xml para podcast, el caso que cuando lo subo a Heroku para hacer pruebas (Podbase validator) todo perfecto menos el tiempo en generar el xml que es de 4 segundos aproximadamente y eso es muchísimo. , ¿cómo podría solucionarlo?, gracias

        Eden Gomez Gress

        Eden Gomez Gress

        student•
        hace 6 años

        Buen dia companeros, cuando trato de ejecutar el comando " npm run start:dev" me sale este error

        Error: Cannot find module '@babel/preset-presets-env' from '/Users/eden/Desktop/platzi/server-side-express/PlatziVideo2/PlatziVideo2'

        Alguien sabe a que se debe?

          Carlos Sampol

          Carlos Sampol

          Team Platzi•
          hace 6 años

          Es por que estas llamando al paquete mal.

          Tienes: @babel/preset-presets-env Es: @babel/preset-env

          Saludos!

          Eden Gomez Gress

          Eden Gomez Gress

          student•
          hace 6 años

          En donde tengo que modificar el llamado de ese modulo?

        Carlos Alfonso Garcia Rivera

        Carlos Alfonso Garcia Rivera

        student•
        hace 5 años

        para usar bebel en el servidor usamos @babel/registrer

        Maria Elizabeth Minero Alvarenga

        Maria Elizabeth Minero Alvarenga

        student•
        hace 5 años

        Genial!

        Luis Carlos Kristen Ospitia

        Luis Carlos Kristen Ospitia

        student•
        hace 6 años

        buen día, alguien que me ayude, tengo el siguiente error.

        ERROR in Entry module not found: Error: Can't resolve 'dev' in '/mnt/c/Users/luisk/OneDrive/Documents/PLATZI/SERVER_SIDE_RENDER_EXPRESS/PlatziVideo-feature-router-redux' ERROR in multi (webpack)-dev-server/client?http://localhost:8080 dev Module not found: Error: Can't resolve 'dev' in '/mnt/c/Users/luisk/OneDrive/Documents/PLATZI/SERVER_SIDE_RENDER_EXPRESS/PlatziVideo-feature-router-redux' @ multi (webpack)-dev-server/client?http://localhost:8080 dev main[1]```
          Rodrigo Esgueva Ordóñez

          Rodrigo Esgueva Ordóñez

          student•
          hace 6 años

          Buenas Luis:

          Asegúrate de poner en el package.json:

          "start:dev": "node src/server/index"

          y en consola ejecutar:

          npm run start:dev
        Carlos Enrique Ramírez Flores

        Carlos Enrique Ramírez Flores

        student•
        hace 6 años

        Creación del servidor en Express

        Agregamos 2 nuevos paths dentro de src.

        fronted y server

        en fronted vamos a mover todos los paths que estan detro de src, a exepción del nuevo path server

        En en path server vamo a crear 2 archivos js server.js y index.js

        instalamos el paquete babel register

        @babel/register

        npm i @babel/register

        instalar express y dotenv

        express

        dotenv

        npm i express dotenv
        Fernando Cordero

        Fernando Cordero

        student•
        hace 6 años
        const express = require('express'); const app = express() app.get('*', (req, res) => { res.send({ hello: 'Hello', world: 'World'}) }) const server = app.listen(3000, () => { console.log(`Server listen on port http://localhost:${server.address().port}`); }) // Mi código
        Ever Alfredo Sorto Ayala

        Ever Alfredo Sorto Ayala

        student•
        hace 5 años

        ¿Qué hace esta estructura ?

        require('@babel/register')({1.2k (gzipped: 532) presets: ['@babel/preset-env','@babel/preset-react' ] })
        Nicolas Esteban Manograsso

        Nicolas Esteban Manograsso

        student•
        hace 5 años

        ¿Lo que se creó en el Curso de Backend con Node.js no se aplica en este?

        Cristofher Jumbo Jimenez

        Cristofher Jumbo Jimenez

        student•
        hace 5 años

        Lo que hemos hecho ha sido, dividir dentro del src el frontend y el backend (client y server) Installar express y dotenv, pero hemos usado express para crear el servidor. Proximamente usaremos el dotenv y nodemon ... Continuara heheheh :green_heart: