Render Svelte as an MPA#824
Open
magopian wants to merge 6 commits into
Open
Conversation
Collaborator
Author
|
J'ai passé la PR en revue, mais pour ma part, je suis contre un tel changement => aucune valeur ajoutée, grande complexité, perte de fonctionnalité. Est-ce nécessaire de faire la revue ? Je ne le pense pas. |
cdesquilbet-dila
approved these changes
May 12, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
D'après ce que j'en comprends des explications de @OtterWays et @NicolasBuquet, la navigation idiomatique dans Android nécessite que la WebView appelle
shouldOverrideUrlLoadingà chaque navigation.Or
shouldOverrideUrlLoadingn'est appelé par la WebView que lors d'une navigation "réelle" : un vrai chargement d'une URL.Il est possible de se passer de "hash-based routing" dans les frameworks javascript modernes, mais ça ne résout pas le soucis de l'appel de
shouldOverrideUrlLoading: dans tous les cas, les frameworks javascript modernes proposent par défaut une navigation parpushState, qui remplace une "navigation réelle" (par chargement de page depuis le serveur).Contrairement à ce que je pensais initialement, passer par un "vrai serveur javascript" (plutôt que de servir les fichiers de manière statique) ne règle pas le soucis, vu que dans ce cas aussi il y a une navigation par
pushStatepar défaut.Cette navigation par
pushStatea plusieurs avantages :gotoen svelte, les composants<Link>en React etc...)C'est la manière moderne de faire des sites en javascript, qu'on appelle communément "SPA" pour Single Page Application, en opposition aux "MPA" (Multiple Page Applications) qui chargent chaque page depuis le serveur.
Par contre, vu que ce n'est pas une navigation réelle (que ce soit basé sur des URLs avec fragments "hash-based" comme par exemple
/#/settings/, ou sur des URLs complètes comme par exemple/settings/), il n'y aura pas d'appel deshouldOverrideUrlLoading.Il est possible de configurer Svelte pour qu'il fasse un
prerenderde chaque page et composant, et le forcer à faire un chargement complet de chaque page, en n'utilisant pas la navigation parpushState(en n'interceptant pas la navigation).Dans ce cas il y a une navigation réelle, qui devrait appeler
shouldOverrideUrlLoading.Voici les inconvénients :
goto=> nécessité d'utiliser un precommit qui vérifie ça, sinon ce sera la navigation par pushState qui sera utilisée => pas d'appel deshouldOverrideUrlLoading, et pas moyen de le découvrir avant de le réaliser en prodwindow.*dans le code javascript (comme pour accéder aulocalStoragedoivent être protégé par unif (browser), sinon il n'est pas possible de builder l'application.Navigation à l'ancienne, MPA, navigation réelle :
MPA_Enregistrement.de.l.ecran.2026-04-21.a.15.37.54.mov
Navigation moderne, SPA, fluide/native :
SPA_Enregistrement.de.l.ecran.2026-04-21.a.15.36.24.mov