CursosEmpresasBlogLiveConfPrecios

Usando Nodemon y Dotenv

Clase 6 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

    07:35 min
  • 6
    Usando Nodemon y Dotenv

    Usando Nodemon y Dotenv

    Viendo ahora
  • 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
        Alver Alexander Grisales Ortega

        Alver Alexander Grisales Ortega

        student•
        hace 6 años

        Mi aporte:

        Crear un archivo index.js en una carpeta nueva llamada config dentro de server

        import dotenv from 'dotenv'; dotenv.config(); const { ENV, PORT } = process.env; export default { env: ENV, port: PORT, }

        y en server.js solo llamo esa configuración

        import express from 'express'; import config from './config'; const { env, port } = config; const app = express(); if (env === 'development') { console.log(env); } app.get('*', (req, res) => { console.log('hola man') res.send({ hello: 'express'}).end(); }); app.listen(port, (err) => { if (err) console.log(err); else console.log(`Server running on port ${port}`); });
          Carlos Sampol

          Carlos Sampol

          Team Platzi•
          hace 6 años

          Excelente aporte, de hecho usarlo asi es la manera mas limpia porque solo lo defines una vez.

          Alver Alexander Grisales Ortega

          Alver Alexander Grisales Ortega

          student•
          hace 6 años

          si es una buena manera de modularizar las cosas

        Cristian Fabian Tovar

        Cristian Fabian Tovar

        student•
        hace 6 años

        Para que más adelante no haya inconvenientes para correr este proyecto en otra máquina o que se esté corriendo este proyecto en un commit posterior, es buena práctica dejar un .env.example para recordarle al desarrollador qué configuraciones de variables de entorno debe tener el proyecto

          Robinson De La Cruz

          Robinson De La Cruz

          student•
          hace 5 años

          Si, buen aporte. Como el archivo .env no se debe subir al repositorio, se crea el .env.example indicando los parametros sin valores.

          PORT= ENV=
        Sergio Perez

        Sergio Perez

        student•
        hace 6 años

        Comparto mis notas, con algunos aportes agregados. Agradezco feedback:

        • Nodemon: nodemon es una herramienta que ayuda a desarrollar aplicaciones. Cuando se detecten cambios de archivo en el directorio Nodemon reiniciara automáticamente la aplicación de node.

          npm install nodemon --dev
        • Teniendo instalado nodemon, podemos utilizarlo en nuestro script de desarrollo en el archivo de package.json

          "start:dev": "nodemon src/server/index"
        • Dotenv: es un modulo de dependencia que carga variables de entorno desde un archivo .env para utilizarlas con process.env. esto permite que podamos tener la configuración del entorno almacenada y separada del código

          npm install dotenv
        • para configurar dotenv tenemos que crear el archivo .env que es donde irán todas nuestras variables de entorno

          ENV=development // Entorno de desarrollo en el cual estaremos trabajando PORT=3000 // Puerto donde sera ejecutada la aplicacion
        • Es buena practica crear un archivo de configuración para eso , creamos un nuevo directorio llamado config y creamos un archivo llamado index.js. que tendrá lo siguiente:

          require('dotenv').config(); //requerimos dotenv a la vez que ejecutamos la funcion config const config = { // Definimos un objeto config //llamamos la variable ENV desde el process.env y hacemos una validacion de seguridad // para indicar que no estemos en modo de producción env: process.env.ENV !== 'production', // de igual forma llamamos al puerto port: process.env.PORT, }; //exportamos el objeto config module.exports = { config };
        • En nuestro archivo de server.js importamos nuestro archivo de configuración que será el modulo donde están toda nuestra configuración de variables de entorno

          const { config } = require('./config');
        • quedando server.js de la siguiente forma:

          import express from 'express' //importamos el archivo config con las variables const { config } = require('./config'); const app = express(); //validación que sí estemos en desarrollo if(config.env === 'development'){ console.log('Development config'); } app.get('*', (req, res) => { res.send({ hello: 'express' }); }); app.listen(config.port, (err) => { if (err) console.error(); else console.log(`Server running on port: ${config.port}`); })
          Andres David Sanchez

          Andres David Sanchez

          student•
          hace 5 años

          excelente aporte. agrego que es util crear un .env.example y subirlo al repositorio, este nos ayudara a recordar que vaiables debemos definir para correr nuestra aplicacion. Como el archivo original .env no se versiona, el de ejemplo nos ayudara

        José Manuel Puicón Rodas

        José Manuel Puicón Rodas

        student•
        hace 6 años

        console.log(server running in mode ${ENV} on port ${PORT});

        Wilson Fernando Antury Torres

        Wilson Fernando Antury Torres

        student•
        hace 6 años

        Las variables de entorno son muy útiles para no exponer data sensible, como credenciales de conexión a bases de datos.

        Garcia Gar

        Garcia Gar

        student•
        hace 6 años

        Hola a todos tengo una duda como puedo configurar dos archivos .env.dev .env.prod y poder acceder desde el server de express

        Gracias

          Luis Lira

          Luis Lira

          student•
          hace 6 años

          ¡Hola!

          Para realizar eso lo que tienes que hacer es pasar el path de tu archivo en variables de entorno dentro de un objeto en el método config. De la siguiente manera:

          require('dotenv').config({ path: './.env.prod' }) console.log(process.env.PORT)

          La lógica de cuál usar ya sería algo que tienes que definir tú. En qué se basará para usar el .env.dev o el .env.prod

        Esteban Martini

        Esteban Martini

        student•
        hace 5 años

        a esta altura me surge la siguiente duda, la configuracion de babel require en el archivo index, es principalmente para usar la forma de import de ES Modules en vez de los modulos de node que son por defecto

        const modulo = require('modulo')

        es asi?

        Tomas Matus

        Tomas Matus

        student•
        hace 5 años

        nodemon con wsl2 funciona muy lento, alguien sabe como solucionarlo?

          Héctor Eduardo López Carballo

          Héctor Eduardo López Carballo

          student•
          hace 5 años

          Hola!

          Dónde almacenas tus archivos? Tienes WSL 1 o 2? WSL2 está optimizado para leer los archivos directo desde Linux y es comun ver gente que tiene este problema corriendo los archivos de Windows.

        Antony Jose Cabeza Rauseo

        Antony Jose Cabeza Rauseo

        student•
        hace 5 años

        Excelente explicacion

        Naldo Duran

        Naldo Duran

        student•
        hace 5 años

        ✌

        Cesar Eliezer Gomez Gutierrez

        Cesar Eliezer Gomez Gutierrez

        student•
        hace 5 años

        Como les permite usar el ( import express from 'express' ) sin obtener un error? A mi solo me deja usar el require

        Ever Alfredo Sorto Ayala

        Ever Alfredo Sorto Ayala

        student•
        hace 5 años

        como se llama el plugin para que salga el tag en las funciones ?

        Lluis Pitarch Ripolles

        Lluis Pitarch Ripolles

        student•
        hace 6 años

        Interesante también que nos muestre la consola en que puerto estamos escuchando

        console.log(`Server is running in port ${PORT}`);
        Carlos Enrique Ramírez Flores

        Carlos Enrique Ramírez Flores

        student•
        hace 6 años

        Instalamos la dependencia nodemon para actualizar el server con cada cambio del código del back

        nodemon

        npm i nodemon
        Neryt Alexander Herrera Iñiguez

        Neryt Alexander Herrera Iñiguez

        student•
        hace 5 años

        Recomendacion personal:

        app.set('port', process.env.PORT || 3000)
        app.listen(app.get('port'), (err) => { console.log(`Server on port ${app.get('port')}`) })
        Rodrigo Esgueva Ordóñez

        Rodrigo Esgueva Ordóñez

        student•
        hace 6 años

        DEPRECATED:

        npm i nodemon --dev

        RECOMIENDO

        npm i nodemon --only=dev
          Rodrigo Esgueva Ordóñez

          Rodrigo Esgueva Ordóñez

          student•
          hace 6 años

          PERDON ESTA ES LA BUENA

          npm i nodemon -D
        Jose Daniel Molina

        Jose Daniel Molina

        student•
        hace 6 años

        Es recomendable tener un archivo .env.example para indicar a futuros colaboradores qué variables de entorno utiliza el proyecto. Importante también nunca subir el archivo .env a un repositorio, ya que dejaríamos la información sensible expuesta

        Gaspar Dolcemascolo

        Gaspar Dolcemascolo

        student•
        hace 5 años

        Recuerden que .env nunca debe subirse al repositorio. También recuerden crear el archivo .env.example, este si se sube y es una guía para otros devs de que variables se necesitan

        CONFIG ENV= PORT=
        Armando Chindoy

        Armando Chindoy

        student•
        hace 5 años

        Por lo que usamos babel no hay inconveniente a la hora de usar

        import {function,variable} from dependencia

        aunque tambien podriamos usar "require" para traernos modulos propios o dependencias

        Cristofher Jumbo Jimenez

        Cristofher Jumbo Jimenez

        student•
        hace 5 años

        Instalamos nodemon -D para no tener que escribir el script en cada cambio (como el hot reload del frontend) dotenv para poder guardar variables en el entorno del projecto y hacer escalable el projecto (significa dar flexibilidad al proyecto, es decir cambios ha futuro no romperar la App) :green_heart: