Wilfredo Meneses
Profesor universitario
React Native
"No piense que la programación no es para usted."
Eso no está permitido :)
Todos tenemos ritmos diferentes. Es cuestión de codificar y codificar hasta dominar el lenguaje.
- Grabaremos todas las sesiones
- Si tiene preguntas pueden interrumpirme
- Me gusta la programación en vivo. Esto es un riesgo.
- Visual Studio code (Editor)
https://code.visualstudio.com/download
- Node JS (Entorno para trabajar JavaScript desde el servidor y basado en V8)
Descargar nodejs (Versión 18.12.1 LTS): https://nodejs.org/en/
Video de instalación: https://youtu.be/2p-mM1uybaQ
- Instalar EXPO CLI: este video explica cómo instalar expo para ejecutar nuestras app y probarlas desde nuestro celular. Recuerden que en el celular requieren de EXPO desde la playstore o appstore - https://youtu.be/a5oY7M8oUUc
- Si desean probar la App Desde Android Studio vea el siguiente video, tome en cuenta que algunas cosas pueden haber cambiado: https://youtu.be/Xt6Sx6Zb1NU
El contenido de la clase quedará en:
Las grabaciones de las clases también estarán disponibles en este enlace.
Objetivos
JavaScript es interpretado
Cada navegador tiene su propio motor de JavaScript, que interpreta el código línea por línea en tiempo de ejecución.
Chrome usa V8, Firefox SpiderMonkey, Safari JavaScriptCore y Chakra para Edge
JavaScritpt utiliza un estándar puesto por ECMA Eurpean Computer Manufacturers Association la cual se encarga de establecer las especificaciones.
Si lees la especificación ECMAScript, aprenderás cómo crear un lenguaje de scripting.
ECMAScript es la especificación donde se mencionan todos los detalles de cómo debe funcionar y comportarse Javascript en un navegador. De esta forma, los diferentes navegadores (Chrome, Firefox, Opera, Edge, Safari...) saben como deben desarrollar los motores de Javascript para que cualquier código o programa funcione exactamente igual, independientemente del navegador que se utilice.
Un script cuando hablamos de programación web es un programa o fragmento de código que se encuentra insertado dentro de un documento HTML.
Este código es interpretado y ejecutado por el navegador web que utiliza el usuario que accede a ese documento, y no en el servidor donde se alojan los archivos de la página web, por lo que no pueden realizar cierto tipo de acciones (como manejar una base de datos alojada en el servidor web).
No tenemos que definir manualmente el tipo de dato del valor que almacena una variable. En su lugar el tipo de dato es determinado de forma automática.
let age = 23;let firstName = 'Luis';let completed = false;let children;Los operadores permiten manipular el valor de las variables, realizar operaciones matemáticas con sus valores y comparar diferentes variables.
De esta forma, los operadores permiten a los programas realizar cálculos complejos y tomar decisiones lógicas en función de comparaciones y otros tipos de condiciones.
Realiza un programa que reciba una cantidad de minutos y muestre por pantalla a cuantas horas y minutos corresponde. Por ejemplo: 1000 minutos son 16 horas y 40 minutos.
¿Cuáles valores son falsos?
¿Cuáles valores son verdaderos?
Objetos
Un objeto es una colección de datos relacionados y/o funcionalidad (que generalmente consta de algunas variables y funciones, que se denominan propiedades y métodos cuando están dentro de objetos)
Arreglos
Un array es una colección de variables, que pueden ser todas del mismo tipo o cada una de un tipo diferente.
Una función es un conjunto de instrucciones que se llaman o se invocan bajo un nombre, tienen un propósito definido y pueden regresar un valor.
Los prototipos son un mecanismo mediante el cual los objetos en JavaScript heredan características entre sí.
La mayoría de los tipos primitivos tienen objetos contenedores
42.toString() // Error
const num = 42;
num.toString() // "42"
num.__proto__; // [Number: 0]
42.__proto__; // Error
x instanceof Number; // False¿Por qué los prototipos se referencian y no se copian?
¿Cuál sería el peligro de referenciar los prototipos?
Number.prototype.toString = function() {return "100"}var tienen un ámbito global o un ámbito función/local, mientras que let y const tienen un ámbito de bloque.var pueden ser modificadas y re-declaradas dentro de su ámbito; las variables let pueden ser modificadas, pero no re-declaradas; las variables const no pueden ser modificadas ni re-declaradas.var se inicializan con undefined, let y const no se inicializan.var y let pueden ser declaradas sin ser inicializadas, const debe ser inicializada durante la declaración.Lo anterior sucede porque:
Antes de ejecutar el código, el motor de JavaScript lee el archivo por completo y lanzará un mensaje de error en caso de existir.
Todas las variables y funciones son parámetros y métodos en el objeto global
¿Por qué los prototipos se referencian y no se copian?
¿Cuál sería el peligro de referenciar los prototipos?
Number.prototype.toString = function() {return "100"}1. Secuenciales
Escribir un programa que convierta un valor dado en grados Fahrenheit a grados Celsius. Recordar que la fórmula para la conversión es:
C = (F-32)*5/9
2. Funciones
Escribir el código de una función a la que se pasa como parámetro un número entero y devuelve como resultado una cadena de texto que indica si el número es par o impar. Luego escriba otra función para calcular si un número es positivo, negativo o nulo. Mostrar por pantalla el resultado devuelto por la función.
Objetivos
Creado en Facebook y publicado en Febrero de 2015 React Native es un framework para la creación de aplicaciones nativas para iOS y Android.
Para programar aplicaciones usando React Native usamos como lenguaje de programación JavaScript, en lugar de Swift, JAVA u otros lenguajes.
Saber que las aplicaciones de React Native no son 100% nativas, es el primer paso para entender qué está sucediendo internamente para que una app escrita en JavaScript se ejecute de manera “nativa” entre comillas.
Las aplicaciones de React Native se componen de 3 elementos principalmente:
1. Código nativo: Un proyecto de React Native puede contener código nativo en combinación con el código de JavaScript, es decir, si estás desarrollando una app para Android podrías tener código de JAVA aparte del proyecto de JavaScript.
Las aplicaciones de React Native se componen de 3 elementos principalmente:
2. JavaScriptCore VM: Las aplicaciones de ReactNative utilizan JavaScriptCore, el motor de ejecución de JavaScript de Safari para ejecutar el código de JavaScript de nuestra app, esto significa que el código que escribas de JavaScript no será compilado, será ejecutado como JavaScript dentro de tu app, por eso decimos que no es 100% nativo, porque internamente hay una máquina virtual que ejecuta el código de JavaScript.
Las aplicaciones de React Native se componen de 3 elementos principalmente:
3. React Native Bridge: Como su nombre lo dice, el React Native Bridge es un puente que se encarga de comunicar el código de la máquina virtual de JavaScript con el código nativo y las APIs nativas de la plataforma en la que se ejecuta nuestra aplicación.
Para detener el react native bundler, presione Ctrl + c desde la terminal donde está ejecutándose el bundler.
Para iniciar de nuevo ejecute npm start y vuelva a escanear el código.
Probemos haciendo cambios...
React basa el desarrollo de apps en componentes
Esto mejora el rendimiento
Para la navegación haremos uso react-navigation:
Comandos básicos:
npm install @react-navigation/native
npx expo install react-native-screens react-native-safe-area-context
npm install @react-navigation/native-stackSe puede repetir el grupo de elementos tres veces
Se puede repetir el JSX tres veces o crear un componente separado
Preguntas:
Preguntas:
Preguntas:
Hooks: Un Hook es una función de Javascript que permite crear/acceder al estado y a los ciclos de vida de React
Notas:
Importante:
Preguntas:
colors - arreglo de string - []
Preguntas:
red, green, blue - number - 255
Objetivos
Preguntas:
De forma predeterminada el border, padding, margin = 0
| margin | Margen en todos los lados |
| marginVertical | Margen arriba (top) y abajo (bottom) |
| marginHorizontal | Margen izquierda (left) y derecha (right) |
| padding | relleno en todos lo lados |
| paddingVertical | Relleno arriba (top) y abajo (bottom) |
| paddingHorizontal | Relleno izquierda (left) y derecha (right) |
| borderWidth | Pone borde en todos los lados |
flexDirection, cambia en el eje primario y secundario
Flex hace que un elemento hijo trate de tomar tanto espacio como sea posible
alignSelf sobre-escribe alignItems del padre
Default
Obedece reglas flex del padre
Objetivos
Para hacer el proyecto portable, no es necesaria la carpeta node_modules.
npm installHaremos uso de la API de yelp.com/fusion
Una API (Application Programming Interfaces) es un conjunto de procedimientos y funciones creados para permitir el acceso al backend de aplicaciones de terceros con el fin de reutilizar servicios ya creados.
Ejemplos: Facebook, Twitter, Google Maps, Yelp, etc.
API (interfaz del programa de aplicación) es un conjunto de reglas que permite que diferentes programas se comuniquen entre sí.
Describe la manera apropiada para que un desarrollador de software componga un programa en un servidor que se comunica con varias aplicaciones cliente.
Lectura obligatoria: https://www.iebschool.com/blog/que-es-api-rest-integrar-negocio-business-tech/
El back end consiste en un servidor, una aplicación y una base de datos. Se toman los datos, se procesa la información y se envía al usuario.
JSON, cuyo nombre corresponde a las siglas JavaScript Object Notation o Notación de Objetos de JavaScript, es un formato ligero de intercambio de datos, que resulta sencillo de leer y escribir para los programadores y simple de interpretar y generar para las máquinas.
Lectura obligatoria: https://www.nextu.com/blog/que-es-json/
JSON es un formato de texto completamente independiente de lenguaje
Lectura obligatoria: https://developer.mozilla.org/es/docs/Web/HTTP/Methods
GET
POST
PUT/PATCH
DELETE
Recibir un recurso
Enviar un recurso
Actualizar recurso
Borrar/destruir recurso
Haremos uso de iconos vectoriales (expo vector icons) https://icons.expo.fyi/
Los iconos se buscan por lo que representan.
fetch:
axios
npm install axios"Sea usted mismo más no sea siempre el mismo." Jokoi Kenji
"Como piensas sientes, como sientes actúas y como actúas te va"
Objetivo
Somos malos en seguridad
La facturación es difícil
// Desde la terminal
cd client
npm install --save react-stripe-checkoutInstalar react-stripe-checkout
node.js podríamos decir que es un entorno de código abierto (Open Source), multiplataforma y que ejecuta el código Javascript fuera de un navegador.
Y es precisamente la necesidad de ejecutar este lenguaje del lado del servidor el que hace surgir Node.js.
Node soporta protocolos TCP, DNS y HTTP.
Lectura obligatoria: https://dev.to/denispixi/que-es-node-js-y-como-funciona-46ck
Expressjs es un framework rápido, minimalista y flexible de Node.js. Permite crear APIs y aplicaciones web fácilmente, provee un conjunto de características como manejo de rutas (direccionamiento), archivos estáticos, integración con bases de datos, manejo de errores, middlewares entre otras.
Las variables de entorno nos permiten administrar la configuración de nuestras aplicaciones por separado de nuestro código base.
Las configuraciones separadas facilitan la implementación de nuestra aplicación en diferentes entornos (development, test, production, etc).
By Wilfredo Meneses