Dónde se ejecuta tu código — navegador, servidor y apps de teléfono

Este artículo forma parte del curso Fundamentos de informática, que construye desde cero los conocimientos prácticos de informática que necesitas como mínimo para programar y hacer vibe coding.
El mismo código se comporta de otra manera dentro de un navegador, dentro de un servidor y sobre el OS de un teléfono. Los diagramas recorren cómo eliges entre una app web y una app nativa.

Este artículo trata dónde se ejecuta el código que escribes.

Hay tres lugares donde se ejecuta: dentro del navegador, dentro del servidor y dentro de la app instalada en un teléfono.

El código de my-app que escribiste se ejecuta en tres lugares separados
Código demy-appindex.htmlapp.jsserver.jsreserve.dbmy-app paraiPhoneEn el navegadordel usuarioDentro delservidor públicoSobre el OSdel teléfonoLlega al abrirla URLNo sale nuncaSe instaladesde la tienda
Un solo conjunto a la izquierda se abre en tres ramas a la derecha. Dentro de un mismo my-app, el lugar donde se ejecuta cada archivo y la forma en que llega a los usuarios son distintos.

El código de una app web se ejecuta en dos lugares: el navegador y el servidor

El software que lee el HTML en el dispositivo del usuario y dibuja la pantalla es el navegador (browser), y una computadora preparada para aceptar solicitudes en cualquier momento es un servidor (server).

Los navegadores más habituales son Chrome, Safari, Edge y Firefox.

El lenguaje que un navegador puede leer y ejecutar directamente es JavaScript.

my-app está hecho de cuatro archivos: los dos de la pantalla son el frontend, y server.js, que recibe las reservas, es el backend.

Cuando un usuario abre la URL, al dispositivo solo le llegan los dos archivos de la pantalla.

Cómo quedan colocados los archivos de un my-app publicado
Equipo del usuario
Navegador
  • index.html — la forma de la pantalla de reservas
  • app.js — lo que pasa al pulsar el botón
  • El usuario puede abrir y leer el contenido de los dos
Servidor público
node server.js
  • Ejecuta el código que recibe las reservas
  • No llega al dispositivo, así que nadie lo lee
reserve.db
  • El archivo donde se escriben los datos de las reservas
Al dispositivo del usuario solo le llegan index.html y app.js. server.js y reserve.db no salen del servidor público.

Aun siendo los archivos del mismo my-app, el lugar donde se ejecutan se reparte en dos marcos.

Al dispositivo solo le llegan index.html y app.js, y a partir de ahí entre los dos marcos solo pasan datos.

De las tres líneas siguientes, la del medio existe solo dentro del navegador y la última solo dentro del entorno de ejecución del servidor.

console.log("Reservar");
console.log(navigator.language);
console.log(process.version);

Si ejecutas estas tres líneas dentro del navegador, los resultados salen así.

Las mismas tres líneas dan resultados distintos según dónde exista esa función
console.log("Reservar")navigator.languageprocess.versionEn todas partesSolo dentrodel navegadorSolo en el entornode ejecuciónReservarja, etc.idioma del navegadorprocess isnot defined
A la izquierda, la línea que escribiste; en el medio, dónde está disponible esa función; a la derecha, el resultado al ejecutarla en el navegador. Solo la de abajo llama a una función que el navegador no tiene.

El código de una app web se reparte en dos lugares

index.html y app.js, que construyen la pantalla, llegan al dispositivo del usuario y se ejecutan dentro del navegador.

server.js, que recibe las reservas, no sale del servidor público, así que los textos que no enseñas a los demás se escriben de ese lado.

Para que se pueda usar en el teléfono, o lo dejas como app web o haces una app nativa

Los teléfonos también tienen navegador.

my-app funciona tal cual si abres la URL en el navegador del teléfono.

Esta es la primera forma, y no hace falta rehacer el código.

El software que gestiona el arranque de las apps, la pantalla, las comunicaciones y los archivos dentro de un dispositivo es el OS (Operating System), que en un teléfono es iOS o Android.

La segunda forma es una app nativa (native app: una app que se pone directamente sobre el OS y se ejecuta ahí), que se hace por separado para iPhone y para Android y se entrega a través de App Store y Google Play.

Poner una app en un dispositivo de manera que se pueda arrancar desde el OS es instalarla (install).

Dentro del teléfono — las apps nativas se apoyan sobre el OS
El teléfono del usuario
OS (iOS / Android)
my-app (la app instalada)
  • Archivos instalados desde App Store
  • Se arranca con el icono de la pantalla de inicio
Navegador
  • Al abrir la URL se ejecuta la app web
  • index.html y app.js llegan aquí
El marco exterior es un teléfono. Sobre el OS se apoyan el my-app instalado y el navegador. Si sigue siendo una app web, se ejecuta dentro de ese navegador.

Como muestra el diagrama, una app nativa se apoya sobre el OS, mientras que una app web se ejecuta sobre el navegador que hay dentro de ese OS.

Un programa o un dispositivo que envía solicitudes a un servidor se llama cliente (client), y al lado que se ejecuta en el dispositivo también se le llama lado del cliente, y al que se ejecuta en el servidor, lado del servidor.

Venga del cliente que venga, las solicitudes se juntan en el mismo sitio
Navegadordel teléfonomy-app instaladoen el teléfononode server.js delservidor públicoreserve.dbSolicitudSolicitudGuardar
Las flechas de los dos de la izquierda se juntan en el centro. Venga del navegador o venga de la app instalada en el teléfono, quien la recibe es el mismo server.js.

Para elegir entre los dos, pones sus ventajas y sus desventajas una al lado de la otra.

Qué mirarApp webApp nativa
Funciones del dispositivo que puedes usarSolo las que ofrece el navegadorAcceso amplio a las funciones del OS
Dónde te encuentra la genteBuscadores y URL compartidasLa búsqueda de App Store o Google Play
Trabajo para hacerla llegar a los usuariosBasta con que abran una URLPasar la revisión de la tienda y que la instalen
Tiempo hasta que un arreglo llega a los usuariosLa siguiente vez que abran la URLEsperar a que el usuario actualice
Cuántos códigos hay que escribirCon uno funciona en iPhone y en AndroidUno para iPhone y otro para Android, por separado

Desde el navegador solo llegas hasta las funciones que ofrece el navegador, y cuando quieres funciones del dispositivo más allá de eso, haces una app nativa.

Lo mismo cuando quieres que te encuentren desde la búsqueda de la tienda; si no se da ninguno de los dos casos, lo dejas como app web.

También hay una manera de hacer apps para varios OS a partir de un solo código fuente, y su nombre se trata en el siguiente artículo.

Cambie como cambie la entrega, server.js es común

Si lo dejas como app web, funciona con solo abrir la URL en el navegador del teléfono.

La app nativa se hace por separado para iPhone y para Android y se instala desde una tienda, pero elijas lo que elijas, server.js y reserve.db se quedan en el servidor público.

En qué se diferencia estar funcionando en tu máquina de estar funcionando publicado

El my-app que hiciste todavía solo se puede abrir desde tu computadora.

El interior de tu computadora, visto como lugar donde se ejecuta el código, se llama local (local).

El número del final de http://localhost:3000 que abres en local sirve para distinguir destinos dentro de la misma computadora, y se trata en el artículo «Qué pasa cuando escribes una URL» de este curso.

Dentro del marco está tu computadora, una sola máquina, y el navegador, server.js y reserve.db están todos ahí.

Al publicar, el contenido de esta única máquina se reparte en dos lugares, pero quién ocupa cada papel no cambia.

Mismo papelLocalDespués de publicar
Ejecuta la pantallaEl navegador de tu computadoraNavegador del usuario
Recibe las reservasnode server.js en tu computadoranode server.js en el servidor público
Guarda los datosreserve.db en tu computadorareserve.db en el servidor público
URL que abre el usuariohttp://localhost:3000La URL del servidor público

Los nombres de los archivos que se ejecutan son los mismos en local y después de publicar.

Mover los cuatro archivos juntos a un servidor público fuera de tu computadora es el despliegue.

Los cuatro archivos pasan al servidor público, y en tu computadora solo queda el navegador.

Si abres el mismo example.com desde cualquier dispositivo, sale la misma pantalla.

Mientras siga en local no acepta solicitudes que vengan de fuera, así que otras personas no lo pueden usar desde sus dispositivos.

localhost:3000 señala al propio dispositivo donde lo escribiste, así que escribirlo en el teléfono de un colega no llega a tu computadora.

En qué consiste el trabajo de publicar se trata en «Despliegue y variables de entorno — de funcionar en tu computadora a estar publicado» de este curso.

Si cambias dónde lo pones, cambias quién lo puede usar

El my-app que conseguiste poner en marcha siguiendo los pasos de un libro para principiantes solo se puede abrir desde dentro de tu computadora, es decir, en local.

Si mueves los cuatro archivos a un servidor público, los dispositivos de otras personas también lo pueden abrir, y ese trabajo es el despliegue.

QUIZ

Verificación de conocimientos

Responde cada pregunta una a una.

Pregunta 1¿Dónde se ejecuta el código de la pantalla de una app web (index.html y app.js)?

Pregunta 2¿Con qué forma se puede usar en el teléfono el my-app que hiciste, sin rehacer el código?

Pregunta 3¿Qué hace falta para que un my-app que funciona en local se pueda usar desde los dispositivos de otras personas?