ElixEye es una aplicación que ofrece la fascinante experiencia de interactuar con la API de la NASA para mostrar imágenes de galaxias. Esta aplicación ha sido construida con un stack tecnológico interesante que incluye TypeScript, React, Styled Components, y Webpack.
¿Cómo está estructurado el stack de ElixEye?
ElixEye utiliza varias tecnologías modernas para su desarrollo:
TypeScript: Se usa para manejar los componentes de React, garantizando mayor robustez y seguridad en el código al definir tipos.
Styled Components: Permite manejar estilos de manera elegante usando CSS en Javascript, facilitando la creación de componentes dinámicos.
Webpack: Se encarga de crear el servidor de desarrollo y empaquetar los archivos del proyecto para que sean entendidos por el navegador.
Express: Un servidor pequeño que sirve para publicar la aplicación y sobre el cual se basará el futuro server-side rendering.
¿Cómo se consume la API de la NASA?
ElixEye utiliza la API NASA Image and Video Library para obtener datos sobre galaxias. La API devuelve un objeto con varios detalles, como el título, ID de NASA, keywords, y tipo de asset (imagen, video, audio).
Este código realiza una solicitud a la API de la NASA y retorna un objeto JSON con los elementos solicitados.
¿Cómo correr la aplicación?
La aplicación puede ejecutarse en modo desarrollo de manera sencilla utilizando Yarn o NPM. Aquí cómo hacerlo:
Para instalar dependencias con Yarn: yarn
Para correr el servidor de desarrollo: yarn dev
En caso de querer hacerlo con NPM:
Instalar dependencias: npm install
Correr en modo desarrollo: npm run dev
¿Qué aporta TypeScript al desarrollo?
Una de las grandes ventajas de TypeScript en ElixEye es su capacidad para identificar errores antes de que lleguen a producción, permitiendo una depuración más sencilla. TypeScript amplía JavaScript al ofrecer un sistema de tipos opcionales.
interfaceUser{ name:string; age:number;}const user: User ={ name:'John', age:30};console.log(user.name);
En este ejemplo, TypeScript ayudará a asegurar que el objeto user cumpla con la estructura definida por la interfaz User.
¿Cuáles son las particularidades de los Styled Components?
Styled Components ofrece la posibilidad de definir estilos dentro de los propios componentes de React usando template literals. Esto lo hace especialmente atractivo para proyectos orientados a server-side rendering.
¿Cómo transformaremos ElixEye de client-side a server-side rendering?
La transición planeada para ElixEye es emocionante: convertir una aplicación de client-side render a server-side render. Esto implica reestructurar cómo la aplicación procesa y entrega las páginas al usuario, asegurando una mayor velocidad y optimización en la renderización inicial. ¿Te entusiasma seguir aprendiendo sobre esta transformación? ¡No te pierdas las siguientes lecciones!
Yo lo resolvi instalando un paquete:
yarn add win-node-env
Gracias! ésta me sirvió 👌👌
Perfecto gracias!
Si alguien llega a tener un problema relacionado con NODE_ENV, al ejecutar algunos de los comandos, simplemente puedes mover esa misma variable de entorno a un archivo .env y eliminarla de los scripts.
gracias! me sirvio
Esto pasa en las maquinas corriendo windows ya que ese script es compatible para Linux/Mac. La solucion es escribir el comando 'SET' previo al 'NODE_ENV' y anidarle el proximo comando con '&&'.
Queda asi: "SET NODE_ENV=development && webpack serve".
Yo hice la instalacion con NPM y te cuento como por si alguien batalla como yo lo hice ja:
1.- En la terminal: "npm install"
2.- Cambie mi packge.json y quedo asi:
"scripts":{"dev":"npm start","build":"NODE_ENV=production webpack","start":"PORT=$PORT NODE_ENV=production npm run build && node server.js"},
3.- Cambié el nombre del archivo ".env.example" a solo ".env" y lo modifiqué quedando "PORT=3000"
4.- Por ultimo: "npm run start" y pude abrir la pagina
Instalar las dependencias y posteriormente ejecutar los comandos me dieron muchos problemas, par ello tuve que hacer lo siguiente:
Limpiar el caché con
yarn clean cache
Agregar "cross-env" a cada script quedando de la siguiente manera:
Y luego instalar esa dependencia (cross-env) usnado npm con el siguiente comando
npm install --save-dev cross-env
Pd.: Yo uso windows
Mil gracias! me ayudo un monton tu aporte. Yo tambien estoy con windows. Lo unico que ademas cambie la parte del scrpt start en lugar del yarn por npm.
no es necesario usar cross-env, ahora se puede usar el comando nativo de JS 'process.loadEnvFile();' al iniciar el archivo donde llames los process.env.
Ejemplo:
process.loadEnvFile();
export const env = {
PORT: process.env.PORT ?? 3600,
DB_HOST: process.env.DB_HOST ?? "localhost",
DB_USER: process.env.DB_USER ?? "root",
DB_PASSWORD: process.env.DB_PASSWORD ?? "",
DB_NAME: process.env.DB_NAME ?? "moviesdb",
DB_PORT: process.env.DB_PORT,
};
que paso con tailwind y vite?
Si miras la documentación de Vite es casi lo mismo .
si estas trabajando en windows y npm y tienes problemas al momento de ejecutar tu priyecto ... sigue estos pasos :
en la terminal ejecuta npm install --save-dev cross-env
en tu archivo package.json pon esto en los scripts : "scripts": {
"dev": "cross-env NODE_ENV=development webpack serve"
}
ahora si , ejecuta en la terminal npm run dev y esto deberia correr tu proyecto
al 17/4/2024 para q este proyecto arranque con windows y npm realicé lo sgt -->
{"name":"helix-eye","version":"1.0.0","description":"Helix Eye is an app that consumes the NASA's API to display their records","main":"index.js","author":"edevars <e.devars.dev@gmail.com>","license":"MIT","scripts":{"dev":"cross-env NODE_ENV=development webpack serve","build":"cross-env NODE_ENV=production webpack","start":"yarn run build && node server.js"},"dependencies":{"@fortawesome/fontawesome-svg-core":"^6.2.1","@fortawesome/free-regular-svg-icons":"^6.2.1","@fortawesome/free-solid-svg-icons":"^6.2.1","@fortawesome/react-fontawesome":"^0.2.0","dotenv":"^16.0.3","react":"^18.2.0","react-dom":"^18.2.0","react-router-dom":"^6.6.1","styled-components":"^5.3.6"},"devDependencies":{"@swc/core":"^1.3.24","@types/styled-components":"^5.1.26","@typescript-eslint/eslint-plugin":"^5.47.0","@typescript-eslint/parser":"^5.47.0","cross-env":"^10.1.0","eslint":"^8.30.0","eslint-plugin-react":"^7.31.11","file-loader":"^6.2.0","html-webpack-plugin":"^5.5.0","swc-loader":"^0.2.3","webpack":"^5.75.0","webpack-cli":"^5.0.1","webpack-dev-server":"^4.11.1"}}
Alguien de ustedes que haya tenido este error al correr la aplicación? SI es así, si me pudieran apoyar en como lo resolvieron :/. Lo estoy trabajando con npm
Error: ENOENT: no such file or directory, stat 'C:\Users\Eduardo Lemus Zavala\Desktop\CodigoCursos\React\SSR\helix\helix-eye-custom-SSR\dist\index.html'
Si a alguien le sale el siguiente error al inicio de cada archivo Tsx:
'originalKeywordKind' has been deprecated since v5.0.0 and can no longer be used.Use'identifierToKeywordKind(identifier)' instead
Lo que a mi me funcionó fue instalar @typescript-eslint/eslint-plugin y @typescript-eslint/parser con una versión mayor a la 6. Instalan, reinician el servidor y el problema debería solucionarse.
Si a alguien le sale el siguiente error al inicio de cada archivo Tsx:
DeprecationError:'originalKeywordKind' has been deprecated since v5.0.0 and can no longer be used.Use'identifierToKeywordKind(identifier)' instead
```Lo que a mi me funcionó fue instalar @typescript-eslint/eslint-plugin y @typescript-eslint/parser con una versión mayor a la 6.Instalan, reinician el servidor y el error debería solucionarse.
Si alguien desea ver los archivos styles.ts con diferenciador de colores esta extension es genial vscode-styled-components
si estan trabajando en Windows deben colocar SET antes de la configuracion de NODE_ENV en los escripts