CursosEmpresasBlogLiveConfPrecios

Assets require hook

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

Clase anteriorSiguiente clase

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

    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

    Viendo ahora
  • 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
    Diego Andres Cabrera Rojas

    Diego Andres Cabrera Rojas

    student•
    hace 6 años

    Para los que no les funciona los assets , sigue mostrandose rota las cosas , solo instalen la version 5.1 npm install file-loader@5.1.0 -D -E , desde la ultima version no esta funcionando , aqui la gran pregunta seria , como se logra entonces cargar las imagenes con la nueva version, pero si no quieren tener problemas ahi esta la solucion temporal.

      Jose Daniel Hernandez Quiceno

      Jose Daniel Hernandez Quiceno

      student•
      hace 5 años

      Si alguien lo logra con las nuevas versiones de file-loader, por favor cuentanos, realmente esta es una solucion temporal

      Héctor Hugo Sandoval Marcelo

      Héctor Hugo Sandoval Marcelo

      student•
      hace 5 años

      Es verdad, la versión 6 no funciona :/ Gracias por la solución

    Fernando Cordero

    Fernando Cordero

    student•
    hace 6 años

    Super! Para la fecha aun hay problemas con la version 6.0.0 de file-loader y asset-require-hook, entonces instalen el file-loader con la version 5.1.0. y no tendrán problemas al chequear su server-side.

    npm i file-loader@5.1.0 -D ```
      Daniel Valdez Torres

      Daniel Valdez Torres

      student•
      hace 5 años

      Gracias!, Marzo del 2021 y funciona, y sigue sin cargar las imagenes con la version 6.0.0

    Daniel Hernández

    Daniel Hernández

    student•
    hace 6 años

    En mi caso tuve que agregar mi componente Layout para que se viera el header de la app.

    const html = renderToString( <Provider store={store}> <StaticRouter location={req.url} context={{}}> <Layout> {renderRoutes(serverRoutes)} </Layout> </StaticRouter> </Provider>, );
      Carlos López

      Carlos López

      student•
      hace 6 años

      Agradezco la solución, sin embargo me gustaría que el Prof. nos ampliara el porque sucede esto...

      Gracias

      José Ocando

      José Ocando

      student•
      hace 6 años

      Exacto, no es la solución del problema… Porque solo agrega el header. Sigue persistiendo el problema con los iconos de los items.

    Oscar Rodrigo Leon Mojica

    Oscar Rodrigo Leon Mojica

    student•
    hace 5 años

    para los que estan trabajando con la version 6 de file-loader tiene que especificar el tipo de hashing para asset-require-hook y para el file-loader

    require('asset-require-hook')({ extensions: ['jpg', 'png', 'gif'], name: '/assets/[md5:hash].[ext]', });
    { test: /\.(png|gif|jpg)$/, use: [ { 'loader': 'file-loader', options: { name: 'assets/[md5:hash].[ext]', } } ] },
      Luis Encina

      Luis Encina

      student•
      hace 5 años

      Genial! ha funcionado! 1- modificación en src/server/index.js 2- modificación de webpack.config.js (module.rules[*].'file-loader')

    José Enrique Pérez Aquino

    José Enrique Pérez Aquino

    student•
    hace 5 años

    Assets require hook

    Assets require hook es un hook que se encarga de importar todas nuestras imágenes en tiempo real cuando sean requeridas mediante SSR

    Con esto, tendremos listo nuestro SSR en su totalidad. Para comenzar instalamos la dependencias

    npm install asset-require-hook

    Luego agregamos la siguiente lineas al index.js del servidor

    require('asset-require-hook')({ extensions: ['jpg', 'png', 'gif'], name: '/assets/[hash].[ext]', });

    Y listo, tendremos cualquier tipo de imagen disponible en nuestro SSR app

    Juan Pablo Celiz

    Juan Pablo Celiz

    student•
    hace 5 años

    "Vamos a copiar exactamente" (min 1:50) es la definición más precisa del curso.

    Hector Jose Flores Colmenarez

    Hector Jose Flores Colmenarez

    student•
    hace 6 años

    Para los que tienen problemas cargando las imágenes usando el paquete asset-require-hook verifiquen que version de file-loader tienen, si tienen la versión 6.0.0 deberán bajar a la versión ```5.1.0`` la cual es la más reciente donde este problema no ocurre.

    Al parecer hay algunos problemas con file-loader@6.0.0 en su ultima version.

    Miguel Hernández

    Miguel Hernández

    student•
    hace 5 años

    Como saben en la versión 6 de file-loader no funciona bien ya que el hash que se genera en el backend es diferente al del frontend, lo solucione dejando de usar el hash en la configuración tanto de webpack como del asset require hook. Al final quedo así: en index.js del servidor

    require('asset-require-hook')({ extensions: ['jpg', 'png', 'gif'], name: '/assets/[name].[ext]', })

    y en webpack añadi la configuración para el nombre de los assets de la siguiente manera en el output de webpack:

    output: { // tu configuración assetModuleFilename: 'assets/[name][ext]', }

    Con eso aunque tenga el nombre por defecto del archivo ya cargaran los assets. Y en la configuración de webpack en las reglas para el file-loader actualmente esta obsoleto y recomiendan usar los asset modules el cual para que funcione a nuestro proyecto deberia ser:

    { test: /\.(png|jpg)$/i, type: 'asset/resource', }

    Espero les funcione, yo estube toda la tarde buscando una solución pero al final logre solucionarlo así ya que en internet no encontre información sobre assets require hook

      Miguel Hernández

      Miguel Hernández

      student•
      hace 5 años

      Por cierto, la configuración de las rules solo funciona en webpack5 por que ahí file-loader esta DEPRECATED

    Enric Vallribera

    Enric Vallribera

    student•
    hace 6 años

    Tengo la configuración tal cual, incluso he copiado y pegado código y no me muestra las imágenes sin Javascript. Veo que no soy al único que le ha pasado.

      Carlos Sampol

      Carlos Sampol

      Team Platzi•
      hace 6 años

      Que versión del file-loader estas usando ? Recientemente actualizaron a la v6 y esta causando ese conflicto. Si bajas a la 5.1.0 del file-loader no deberias tener problemas

      Enric Vallribera

      Enric Vallribera

      student•
      hace 6 años

      He visto que hay un problema con el file-loader, si se utiliza la versión actual, que en mi caso es la versión 6, no funciona, he descargado el proyecto de archivos y funcionaba hasta que he actualizado a esa versión. Como se podría resolver?

    Victor Hugo Muñoz Hernández

    Victor Hugo Muñoz Hernández

    student•
    hace 4 años

    Mi solución fue utilizar los Asset Modules que vienen con Webpack5, especificamente asset/resource

    { test: /\.(png|gif|jpg)$/, type: 'asset/resource', }

    Para que funcionen los hashes también agregué en el output la regla de assetModuleFilename de la siguiente manera

    output: { path: path.resolve(__dirname, 'dist'), filename: 'bundle/app.js', publicPath: '/', assetModuleFilename: 'assets/[hash][ext]', }

    Para que funcione asset-require-hook tenemos que tener el mismo método de cifrado, en este caso webpack utiliza md4 con 20 caracteres, entonces nuestra configuración de asset-require-hook queda así

    require('asset-require-hook')({ extensions: ['jpg', 'png', 'gif'], name: 'assets/[md4:hash:20].[ext]', });

    Espero les ayude, pueden jugar con la configuración de asset-require-hook en el método de cifrado o la cantidad de caracteres si no funciona.

    Bruno Amadori

    Bruno Amadori

    student•
    hace 6 años

    Lo que pude detectar, es que si tenés la version 6.0, de alguna forma el HASH que se genera como nombre de los archivos de las imagenes en el backend no coincide con el HASH de la URL del llamado a cada imagen en el frontend.

    raro.

      Miguel Hernández

      Miguel Hernández

      student•
      hace 5 años

      Si, también note lo mismo. Sigo sin solucionarlo :(

      Miguel Hernández

      Miguel Hernández

      student•
      hace 5 años

      En el output de webpack agrega:

      assetModuleFilename: 'assets/[name][ext]',

      y en el servidor modifica el name:

      require('asset-require-hook')({ extensions: ['jpg', 'png', 'gif'], name: '/assets/[name].[ext]', })

      y en las reglas donde esta file-loader deberia ser así si usas webpack5:

      { test: /\.(png|jpg)$/i, type: 'asset/resource', }
    Anibal Moises Garcia Moy

    Anibal Moises Garcia Moy

    student•
    hace 5 años

    si corremos npm outdated nos damos cuenta de que la versión estable de file-loader es la 5.1.0

    Félix Andersson

    Félix Andersson

    student•
    hace 5 años

    Ese paquete esta bastante viejo y utiliza dependencias deprecadas

    Personalmente prefiero dejar el pre-render sin esas imagenes

      Jorge Iván Otero Vargas

      Jorge Iván Otero Vargas

      student•
      hace 5 años

      Deprecado != Deprecate

    Guillermo Andres Valenzuela Palencia

    Guillermo Andres Valenzuela Palencia

    student•
    hace 6 años

    Al deshabilitar Javascript, no me cargan las imagenes....

      Alan David R.L.

      Alan David R.L.

      student•
      hace 6 años

      Hola, Guillermo.

      Asegúrate de tener el archivo así:

      require('ignore-styles'); require('@babel/register')({ presets: ['@babel/preset-env', '@babel/preset-react'], }); require('asset-require-hook')({ extensions: ['jpg', 'png', 'gif'], name: '/assets/[hash].[ext]', }); require('./server');

      Yo tenía el mismo problema que tu pero era porque tenia un typo. Espero te sirva.

    Juan Carlos Pinzón

    Juan Carlos Pinzón

    student•
    hace 6 años

    Un dato, no me cargaba los archivos .webp me daba error, los a cambié a .png y ya funcionó todo ok 👀. Sí agregué la extensión en el asset-require-hook

    Nilson Diaz

    Nilson Diaz

    student•
    hace 5 años

    Hola ! Existe alguna alternativa a asset-require-hook sin tener que degradar dependencias ? ya que la unica manera con la que consegui solucionarlo fue siriviendo las imagenes como estaticos con express.static() .

    Axlin Miranda

    Axlin Miranda

    student•
    hace 4 años

    Saludos, en el caso que los assets del css se tenga en dos carpeta ejemplo: /mobile /desktop - estilo para versión escritorio

    En ese caso, como se le pasaría ese valor en name?

    require('asset-require-hook')({ extensions: ['jpg', 'png', 'gif'], name: '/assets/[hash].[ext]', });
    john fredy quimbaya orozco

    john fredy quimbaya orozco

    student•
    hace 5 años

    sale el siguiente error

    const resource = this._identifier.split('!').pop(); ^

    TypeError: Cannot read property 'split' of undefined

    si alguien sabe como solucionar

    Jorge Méndez Ortega

    Jorge Méndez Ortega

    student•
    hace 5 años

    Por qué usan react-asset-hooks y no utilizan el manejo de staticos de express?

      Massimo Di Berardino

      Massimo Di Berardino

      student•
      hace 5 años

      Hola Jorge, fue la manera en la que el profesor del curso lo implemento, pero si te funciona bien con el manejo de estáticos de express también puedes hacerlo

    john fredy quimbaya orozco

    john fredy quimbaya orozco

    student•
    hace 5 años

    tengo el siguiente error const resource = this._identifier.split('!').pop(); ^

    TypeError: Cannot read property 'split' of undefined

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