Catálogo de componentes visuales y librería de software NPM para el equipo de front-end de la empresa TSO Mobile Santiago Orozco Holguin Informe de practica académica para optar al título de: Ingeniero Electrónico Asesor interno: Prof. Gustavo Adolfo Patiño Álvarez Universidad de Antioquia Asesor externo: Ronal Camilo Cuellar Engineering Lead Universidad de Antioquia Facultad de Ingeniería, Departamento de Ingeniería Electrónica y Telecomunicaciones Medellín, Colombia 2023 1 Cita (Orozco Holguin, S (2023)) Referencia Estilo APA 7 (2020) Orozco Holguin, S (2023). Catálogo de componentes visuales y librería de software NPM para el equipo de front-end de la empresa TSO Mobile [Semestre de industria]. Universidad de Antioquia, Medellín. Centro de Documentación Ingeniería (CENDOI) Repositorio Institucional: http://bibliotecadigital.udea.edu.co Universidad de Antioquia - www.udea.edu.co Rector: John Jairo Arboleda Cespedes. Decano/Director: Jesús Francisco Vargas Bonilla. Jefe departamento: Augusto Enrique Salazar Jiménez. El contenido de esta obra corresponde al derecho de expresión de los autores y no compromete el pensamiento institucional de la Universidad de Antioquia ni desata su responsabilidad frente a terceros. Los autores asumen la responsabilidad por los derechos de autor y conexos. 2 TABLA DE CONTENIDO: 1. Resumen..........................................................................................................................6 2. Introducción.................................................................................................................... 6 3. Objetivos..........................................................................................................................7 3.1. Objetivo general....................................................................................................... 7 3.2. Objetivos específicos................................................................................................7 4. Marco teórico.................................................................................................................. 8 4.1. Contexto general del proyecto................................................................................. 9 4.1.1. TSO Mobile a GPS Trackit company............................................................... 9 4.1.2. Planteamiento del problema y área de aplicación........................................... 9 4.1.3. Planteamiento de solución propuesta............................................................10 4.1.4 Componentes a ser migrados a TypeScript.................................................... 11 4.1.4.1 Button......................................................................................................11 4.1.4.2 Checkbox................................................................................................ 11 4.1.4.3 Radio Button........................................................................................... 11 4.1.4.4 TextArea..................................................................................................12 4.1.4.5 Input........................................................................................................12 4.1.4.6 SidePanel............................................................................................... 12 4.1.4.7 Switch..................................................................................................... 12 4.1.4.8 Tooltip..................................................................................................... 12 4.1.4.9 Modal......................................................................................................13 4.1.5. Diagrama de bloques de la solución propuesta.............................................14 4.2. Desarrollo web........................................................................................................16 4.2.1. Frontend.........................................................................................................19 4.2.2. HTML............................................................................................................. 19 4.2.3. CSS................................................................................................................20 4.2.4. JavaScript...................................................................................................... 21 4.2.4.1. Motor de JavaScript...............................................................................22 4.2.4.2 Lenguaje de tipado débil........................................................................ 22 4.2.5 TypeScript....................................................................................................... 22 4.3. Framework de desarrollo web................................................................................ 23 4.3.1. React..............................................................................................................23 4.3.1.1. Componentes visuales.......................................................................... 24 4.3.1.2. Tipos de componentes.......................................................................... 26 4.3.1.3 Ciclos de vida de un componente tipo clase.......................................... 26 4.3.1.4 Hooks......................................................................................................27 4.4. Storybook............................................................................................................... 27 3 4.5. Pruebas unitarias....................................................................................................29 4.5.1. Jest.................................................................................................................30 4.6. Librería NPM.......................................................................................................... 31 4.6.1. Control de versiones de una librería de NPM................................................ 31 5.7. Sistema de control de versiones GIT..................................................................... 32 5.7.1 Git-flow............................................................................................................33 5.7.1.1. Rama Master o Main............................................................................. 33 5.7.1.2. Rama Develop.......................................................................................33 5.7.1.1. Rama Feature........................................................................................34 5.7.1.2. Rama Release o QA..............................................................................34 5.7.1.3. Rama Hotfix...........................................................................................34 5. Metodología...................................................................................................................36 5.1. Definición de componentes a migrar......................................................................36 5.2. Creación del proyecto de React e instalación de herramienta Storybook..............36 5.3. Migración de componente Button...........................................................................40 5.3.1 Componente Button en JavaScript................................................................. 41 5.3.2. Nuevo componente Button migrado a TypeScript......................................... 43 5.4. Storybook del componente.....................................................................................48 5.4.1. Ejecución de Storybook................................................................................. 51 5.4.2. Controles interactivos de un componente......................................................52 5.4.3. Documentación de un componente............................................................... 53 5.5. Creación de pruebas unitarias............................................................................... 55 5.6. Procedimiento realizado con los otros componentes.............................................60 5.7. Despliegue de librería NPM....................................................................................63 6. Resultados y Análisis...................................................................................................64 6.1 Resultados...............................................................................................................65 6.1.1 Repositorio en GitHub de componentes en TypeScript.................................. 65 6.1.2 Storybook........................................................................................................66 6.1.2.1 Componentes......................................................................................... 67 6.1.2.2 Documentación.......................................................................................70 6.1.3 Pruebas unitarias............................................................................................ 72 6.1.4 Librería NPM...................................................................................................72 6.2. Análisis................................................................................................................... 73 7. Conclusiones................................................................................................................ 74 8. Referencias bibliográficas........................................................................................... 76 9. Anexos...........................................................................................................................78 4 LISTA DE FIGURAS: Figura 1. Input/output de prácticas académicas................................................................. 11 Figura 2. Diagrama de bloques de la solución propuesta.................................................. 14 Figura 3. Ejemplo de página dinámica............................................................................... 17 Figura 4. Ejemplo de página estática................................................................................. 18 Figura 5. Ejemplo de dispositivos IOT sin frontend............................................................ 18 Figura 6. Estructura básica de un archivo HTML................................................................20 Figura 7. Efecto de archivo CSS sobre elementos de HTML............................................. 21 Figura 8. Ejemplo de uso del estado interno de un componente de React........................ 25 Figura 9. Render basado en valor de prop en componente