19-02-2016, 04:16 PM
(19-02-2016, 02:08 PM)Xenos a écrit : Je ne vois pas comment tu peux faire un site mono-page à coup de JS sans réinventer le navigateur dans cette même page.
Avec les technologies que j'utilise dans mon projet (Meteor et le package flow.router), toutes les fonctionnalités des navigateurs sont conservées (clic du milieu, historique...)
Les liens ont l'air tout à fait normaux :
Code :
<a href:"/mapage">Ma page</a>
Si on clique sur ce lien, au lieu d'envoyer une requête html pour charger une nouvelle page, ça appelle un script javascript qui va :
-modifier l'url de la page
-signaler à l'historique du navigateur qu'on a changé de page (donc toutes les fonctionnalités du navigateur comme les boutons précédent, les favoris etc. fonctionneront).
-charger les données nécessaire via websocket.
-mettre à jour le html
Au final le résultat est exactement le même qu'avec un lien classique, sauf que seules les données envoyées par le serveur sont celles nécessaires pour la page.
Par exemple pour un article de blog le serveur enverra un simple json du style :
Code :
{
title: "Test",
author: "Theta",
content: "Lorem ipsum...",
comments: [
{author: "bob", content: "Trop cool"},
{author: "luc", content: "+1"}
]
}
L'avantage c'est qu'on n'a pas à ré-envoyer à chaque page, par exemple, le menu de navigation ou le footer. Du coup ça réduit pas mal le temps de chargement des pages.
Avec meteor il existe même des packages permettant de faire site accessible à ceux qui ont js désactivé (et donc aussi aux bots des moteurs de recherche) sans avoir rien à recoder.
Du point de vue du visiteur, un site mono-page en js s'utilise donc strictement de la même façon qu'un site web classique, hormis en allant voir le code source il n'y a aucun moyen de voir la différence (quand c'est bien fait, hein, c'est sur qu'avec de l'AJAX tout basique ce n'est pas le cas).
Et au niveau du temps de développement ou de la difficulté à apprendre à se servir d'un framework js, ce n'est pas vraiment différent de ce qu'on a avec un framework en php (ou autre).