Où s'exécute ton code — navigateur, serveur et applications mobiles

Cet article fait partie du cours Les bases de l'informatique, qui construit depuis zéro les connaissances informatiques pratiques indispensables pour programmer et faire du vibe coding.
Un même code ne se comporte pas pareil dans un navigateur, dans un serveur et sur l'OS d'un téléphone. Des schémas retracent le choix entre application Web et application native.

Cet article traite de l'endroit où s'exécute le code que tu écris.

Il y a trois endroits : dans le navigateur, dans le serveur, et dans l'application installée sur un téléphone.

Le code de my-app que tu as écrit s'exécute à trois endroits distincts
Code demy-appindex.htmlapp.jsserver.jsreserve.dbmy-apppour iPhoneDans le navigateurde l'utilisateurDans le serveurpublicSur l'OS dutéléphoneArrive quandon ouvre l'URLNe sort jamaisInstallé depuisla boutique
Un seul bloc à gauche se divise en trois branches à droite. Dans un même my-app, l'endroit où un fichier s'exécute et la façon dont il arrive à l'utilisateur diffèrent.

Le code d'une application Web s'exécute à deux endroits : le navigateur et le serveur

Le logiciel qui lit le HTML sur l'appareil de l'utilisateur et dessine l'écran est le navigateur (browser), et un ordinateur préparé pour accepter des requêtes à tout moment est un serveur (server).

Les navigateurs les plus répandus sont Chrome, Safari, Edge et Firefox.

Le langage qu'un navigateur lit et exécute directement est JavaScript.

my-app est fait de quatre fichiers : les deux de l'écran forment le frontend, et server.js, qui reçoit les réservations, est le backend.

Quand un utilisateur ouvre l'URL, seuls les deux fichiers de l'écran arrivent sur l'appareil.

La disposition des fichiers d'un my-app publié
Appareil utilisateur
Navigateur
  • index.html — la forme de l'écran de réservation
  • app.js — ce qui se passe quand le bouton est pressé
  • L'utilisateur peut ouvrir et lire le contenu des deux
Serveur public
node server.js
  • Exécute le code qui reçoit les réservations
  • N'arrive pas sur l'appareil, donc personne ne le lit
reserve.db
  • Le fichier dans lequel les données de réservation sont écrites
Seuls index.html et app.js arrivent sur l'appareil de l'utilisateur. server.js et reserve.db ne sortent pas du serveur public.

Même à l'intérieur des fichiers d'un seul my-app, l'endroit où ils s'exécutent se répartit entre deux cadres.

Seuls index.html et app.js arrivent sur l'appareil, et ensuite seules des données circulent entre les deux cadres.

Des trois lignes qui suivent, celle du milieu n'existe qu'à l'intérieur du navigateur, et la dernière qu'à l'intérieur de l'environnement d'exécution du serveur.

console.log("Réserver");
console.log(navigator.language);
console.log(process.version);

Si tu exécutes ces trois lignes dans le navigateur, les résultats se répartissent ainsi.

Les trois mêmes lignes donnent des résultats différents selon l'endroit où la fonction existe
console.log("Réserver")navigator.languageprocess.versionExiste partoutExiste seulementdans le navigateurExiste seulementdans l'env. serveurRéserverja, etc.langue du navigateurprocess isnot defined
À gauche, la ligne que tu as écrite ; au milieu, l'endroit où cette fonction est fournie ; à droite, le résultat quand elle s'exécute dans le navigateur. Seule celle du bas appelle une fonction que le navigateur n'a pas.

Le code d'une application Web se répartit entre deux endroits

index.html et app.js, qui construisent l'écran, arrivent sur l'appareil de l'utilisateur et s'exécutent dans le navigateur.

server.js, qui reçoit les réservations, ne sort pas du serveur public : c'est donc de ce côté que tu écris le texte que tu ne montres pas aux autres.

Pour rendre l'application utilisable sur téléphone, tu la gardes en application Web ou tu fais une application native

Les téléphones aussi ont un navigateur.

my-app fonctionne tel quel si tu ouvres l'URL dans le navigateur d'un téléphone.

C'est la première méthode, et il n'y a pas besoin de refaire le code.

Le logiciel qui gère, à l'intérieur d'un appareil, le lancement des applications, l'écran, les communications et les fichiers est l'OS (Operating System) ; sur un téléphone, c'est iOS ou Android.

La deuxième méthode est l'application native (native app : une application posée directement sur l'OS et exécutée là), que tu construis séparément pour iPhone et pour Android et que tu distribues par l'App Store et Google Play.

Poser une application sur un appareil pour qu'elle puisse être lancée depuis l'OS, c'est l'installation (install).

À l'intérieur d'un téléphone — les applications natives se posent sur l'OS
Téléphone de l'utilisateur
OS (iOS / Android)
my-app (l'application installée)
  • Fichiers installés depuis l'App Store
  • Se lance par l'icône de l'écran d'accueil
Navigateur
  • Ouvrir l'URL exécute l'application Web
  • index.html et app.js arrivent ici
Le cadre extérieur est un seul téléphone. Sur l'OS se posent le my-app installé et le navigateur. Si l'application reste une application Web, elle s'exécute dans ce navigateur.

Comme le montre le schéma, une application native se pose sur l'OS, tandis qu'une application Web s'exécute sur le navigateur contenu dans cet OS.

Un programme ou un appareil qui envoie des requêtes à un serveur est appelé client ; on parle aussi de côté client pour ce qui s'exécute sur l'appareil, et de côté serveur pour ce qui s'exécute sur le serveur.

Depuis l'un ou l'autre client, les requêtes convergent au même endroit
Navigateur dutéléphonemy-app installésur le téléphonenode server.js duserveur publicreserve.dbRequêteRequêteEnregistrer
Les flèches partant des deux cases de gauche convergent vers le centre. Qu'elle vienne du navigateur ou de l'application installée sur le téléphone, c'est le même server.js qui la reçoit.

Le choix se fait en comparant les points forts et les points faibles.

Ce qu'on regardeApplication WebApplication native
Fonctions de l'appareil utilisablesUniquement celles que le navigateur fournitLarge accès aux fonctions de l'OS
Endroit où on la trouveMoteurs de recherche et URL partagéesRecherche dans l'App Store ou Google Play
Travail pour la livrer aux utilisateursIl suffit de leur faire ouvrir une URLPasser la validation de la boutique, puis la faire installer
Délai pour qu'une correction atteigne les utilisateursDès la prochaine ouverture de l'URLAttendre que l'utilisateur mette à jour
Nombre de codes à écrireUn seul fonctionne sur iPhone comme sur AndroidUn pour iPhone et un pour Android, séparément

Depuis un navigateur, tu n'as accès qu'aux fonctions que le navigateur fournit ; quand tu veux utiliser plus largement les fonctions de l'appareil, tu fais une application native.

C'est pareil quand tu veux que l'application soit trouvée par la recherche des boutiques ; si aucun des deux cas ne s'applique, tu la gardes en application Web.

Il existe aussi un moyen de construire, à partir d'un seul code source, des applications pour plusieurs OS, et son nom est traité dans le prochain article.

Quelle que soit la façon de la livrer, server.js reste commun

Si tu la gardes en application Web, il suffit d'ouvrir l'URL dans le navigateur d'un téléphone pour qu'elle fonctionne.

Une application native se construit séparément pour iPhone et pour Android et s'installe depuis une boutique, mais quel que soit ton choix, server.js et reserve.db restent posés sur le serveur public.

Ce qui change entre une application qui tourne sur ta machine et une application en ligne

Le my-app que tu as construit ne s'ouvre encore que depuis ton ordinateur.

L'intérieur de ton ordinateur, vu comme un endroit où exécuter du code, s'appelle le local.

Le numéro à la fin du http://localhost:3000 que tu ouvres en local sert à distinguer les destinataires à l'intérieur d'un même ordinateur, et il est traité dans l'article « Ce qui se passe quand tu entres une URL » de ce cours.

L'intérieur du cadre est ton ordinateur, une seule machine, et le navigateur, server.js et reserve.db s'y trouvent tous.

Une fois en ligne, le contenu de cette machine unique se répartit à deux endroits, mais les acteurs de chaque rôle ne changent pas.

Même rôleEn localAprès la mise en ligne
Exécuter l'écranLe navigateur de ton ordinateurNavigateur utilisateur
Recevoir les réservationsnode server.js sur ton ordinateurnode server.js sur le serveur public
Enregistrer les donnéesreserve.db sur ton ordinateurreserve.db sur le serveur public
URL ouverte par l'utilisateurhttp://localhost:3000L'URL du serveur public

Les noms des fichiers qui s'exécutent sont les mêmes en local et après la mise en ligne.

Déplacer les quatre fichiers ensemble vers un serveur public, hors de ton ordinateur, voilà ce qu'est le déploiement.

Les quatre fichiers passent sur le serveur public, et il ne reste sur ton ordinateur que le navigateur.

Depuis n'importe quel appareil, ouvrir le même example.com affiche le même écran.

Tant qu'elle reste en local, l'application n'accepte pas les requêtes venues de l'extérieur, donc les autres ne peuvent pas s'en servir depuis leur appareil.

localhost:3000 désigne l'appareil sur lequel tu l'as saisi, donc le saisir depuis le téléphone d'un collègue n'atteint pas ton ordinateur.

Ce que contient le travail de mise en ligne est traité dans l'article « Déploiement et variables d'environnement — de ce qui marche chez toi à la mise en ligne » de ce cours.

Change l'endroit où tu la poses, et tu changes qui peut l'utiliser

Le my-app que tu as fait tourner en suivant les étapes d'un livre pour débutants ne s'ouvre que depuis l'intérieur de ton ordinateur, c'est-à-dire en local.

Déplace les quatre fichiers vers un serveur public et les appareils des autres peuvent l'ouvrir aussi : ce travail, c'est le déploiement.

QUIZ

Vérification des connaissances

Répondez à chaque question une par une.

Question 1Où s'exécute le code de l'écran d'une application Web (index.html et app.js) ?

Question 2Quelle méthode rend le my-app que tu as construit utilisable sur téléphone sans refaire le code ?

Question 3Que faut-il pour rendre un my-app qui tourne en local utilisable depuis les appareils des autres ?