web-dev-qa-db-fra.com

PHP vs JavaScript pour les pages HTML dynamiques

En règle générale, lorsque j'assemble des balises HTML générées de manière dynamique, j'utilise PHP pour stocker les informations, puis en boucle pour créer des éléments sur la page. Un exemple est la navigation; créez un tableau d'objets, puis passez-les en boucle pour faire écho au balisage. Cela aide beaucoup lorsque je dois effectuer des modifications mineures (ou majeures) au cours du développement ou de la maintenance.

Dernièrement, je me demandais si je devrais utiliser JavaScript pour le faire à la place. Même principe, mais en utilisant addElement.

Je voulais juste avoir des opinions à ce sujet; avantages, inconvénients, php vs js, considérations de référencement, etc.

Merci les gars!

21
Eric

Faire cela côté client signifie:

  1. Le faire dans beaucoup d'environnements différents au lieu d'un seul
  2. Avoir la pause chaque fois qu'un utilisateur arrive sans JS (pour une raison quelconque)
  3. Ne pas le faire fonctionner pour la grande majorité des bots (y compris les moteurs de recherche)
  4. Investir du temps de développement dans la conversion de toute votre logique
  5. Demander au navigateur de faire des demandes supplémentaires au serveur, ce qui ralentit les temps de chargement

Lorsque vous décidez si vous devez faire quelque chose côté client plutôt que côté serveur, en règle générale, posez-vous deux questions:

  1. L'utilisateur aurait-il avantage à obtenir un retour instantané en réponse à ses actions? par exemple. Un message d'erreur pour les données incorrectes dans un formulaire qu'ils essaient de soumettre. Si tel est le cas, le faire côté client serait bénéfique. 
  2. Peut-on le faire côté serveur? Si c'est le cas, faites-le d'abord sur le serveur car il est plus fiable (et pour les choses non esthétiques, plus difficile à interférer). Construire sur des choses qui fonctionnent .
40
Quentin

Ce n'est pas l'un ou l'autre type de situation; En règle générale, vous devrez faire les deux. 

Faire cela côté client sera probablement plus lent, car le serveur doit encore récupérer toutes les données mais le client doit les restituer; cela impliquera plusieurs requêtes (le plus probable) et la manipulation du DOM est lente (surtout sur les anciens navigateurs).

4
El Yobo

La meilleure pratique serait de produire tout balisage nécessaire côté serveur. Les raisons pour cela incluent:

SEO: La plupart des robots d'exploration n'analyseront pas le langage Javascript, ils ignoreront donc tout élément crucial généré par addElement.

Accessibilité: Votre site devrait en principe fonctionner sans Javascript. Considérez les personnes qui pourraient consulter votre site sur Kindles, les Blackberry plus âgés, les Nokias ou d’autres téléphones avec données. Ils n'ont pas besoin de tous les styles et effets sophistiqués, mais ils devraient au moins pouvoir se déplacer sur votre site.

Cohérence: JS peut ajouter un autre niveau de variabilité entre les navigateurs. Pourquoi compter sur le rendu côté client du balisage nécessaire? Faites-le côté serveur.

Bien entendu, ce conseil peut être suivi à la lettre si vous développez une application de bureau entièrement JS ou utilisez quelque chose comme le Sencha Touch framework.

4
Charlie Tran

Si le référencement vous intéresse, les choses sont simples: JS n'est pas indexé.

Il existe également des problèmes d'interface utilisateur: si JS n'est pas activé, aucun élément dépendant de JS ne sera chargé.

1

Une possibilité serait de détecter quel type d’utilisateur visualise votre site:

  • Si c'est un bot: analyse côté serveur, vous pouvez simplement sortir ce dont il a besoin, sans éléments graphiques, ...

  • Si c'est un mobile: affichez une version optimisée pour mobile, en utilisant quelque chose comme Sencha Touch, comme Charlie l'a souligné

  • Si c'est un navigateur standard, sans javascript: restituer la page côté serveur

  • Si c'est un navigateur standard, si javascript est activé: il suffit d'envoyer les données du côté serveur (ou de les charger avec Ajax) et de restituer les données depuis le côté client

Vous pouvez utiliser quelque chose comme Moustache , qui est un moteur de template fonctionnant sur de nombreux langages côté serveur (PHP, Ruby, Java, ... mais aussi sur Javascript, permettant le rendu de page côté client!

Et essayez d’utiliser un framework Javascript comme jQuery , Mootools , Dojo ou ExtJS , ils vous aideront à écrire du code pouvant s’exécuter sur tous les navigateurs.

0
ygosteli

PHP est utile pour certaines choses, y compris la modélisation de type de guidon et le remplacement rapide du contenu côté serveur. Mais ce n’est pas non plus idéal pour certaines choses, comme les applications à page unique et les jeux, les mises à jour en temps réel des sites Web. Ces choses sont où JavaScript est fort.

0
Gort