Recursos estáticos
La aplicación Jutro (y las aplicaciones creadas con ella) se basan en create-react-app. Debido a esto, se aplican las mismas recomendaciones en cuanto a las herramientas.
Ubicación de recursos estáticos
Las aplicaciones generadas por create-react-app utilizan el directorio ./public para mantener recursos estáticos (imágenes, etc.), pero, en su lugar, la aplicación Jutro utiliza ./src/assets.
Ese directorio personalizado se configura utilizando la propiedad paths.appPublic en ./overrides.config.js. Todos los archivos en ese directorio son recursos estáticos y se puede hacer referencia a ellos fácilmente en tiempo de ejecución. La única excepción aquí es index.html, que está dentro de la carpeta ./html.
URI de datos
Para evitar problemas de agrupación y Webpack, puede usar URI de datos para las imágenes. De este modo, no se hace referencia a un archivo de imagen, sino que se incrusta la imagen en el origen. Puede usar SVG integrado en las propiedades:
<Image
src="data:image/svg+xml;utf8,<svg ... > ... </svg>"
alt="cooking apron"
/>
o en CSS:
.background {
background: url('data:image/svg+xml;utf8,<svg ...> ... </svg>');
}
También puede codificar una imagen en Base64 y agregarla como una propiedad:
<Image
alt=""
src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDo etc"
/>
o en CSS:
.background {
background: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDo etc');
}
Referencia a recursos estáticos en el código
Dependiendo del lugar donde se encuentre la referencia, se puede realizar de dos formas: agrupada y desagrupada.
Agrupada
Para agrupar un recurso, impórtelo en su código JavaScript y utilícelo en un componente:
import logo from '../images/logo.svg';
<img src={logo} />;
Obtendrá más información en la documentación de create-react-app aquí.
Desagrupada
Puede hacer referencia a los recursos de su directorio desde recursos estáticos de una de dos maneras:
- Desde plantillas HTML usando el prefijo
%PUBLIC_URL%de marcador de posición, por ejemplo:<img src="%PUBLIC_URL%/<path-to-the-image-under-src-assets>" /> - Desde el código JS (por ejemplo, como parte del
render()del componente), usando la variable envPUBLIC_URL, por ejemplo:render() {
return (
<img src={`${process.env.PUBLIC_URL}/<path-to-the-image-under-src-assets>`} />
);
}
Diferencia entre Dev y dist
Cuando utiliza npm run build, copia los recursos estáticos desde ./src/assets a una ubicación adecuada en el subdirectorio ./dist, lo que hace que los recursos también estén disponibles durante el tiempo de ejecución. Recuerde mantener la referencia a los recursos utilizando PUBLIC_URL como se mencionó antes. Esta variable se resuelve en una ubicación adecuada en el momento de la compilación mediante react-scripts.