JeuWeb - Crée ton jeu par navigateur
Apprendre Ajax et bien choisir ses outils - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Apprendre Ajax et bien choisir ses outils (/showthread.php?tid=6326)

Pages : 1 2 3 4 5 6


Apprendre Ajax et bien choisir ses outils - Damocorp - 18-08-2012

Citation : Damocorp a écrit :

Citation :J'ai donc travaillé PHP (toujours du from scratch crappy).

Tu veux dire quoi par "from scratch crappy" ?


Je veux dire sans framework. 2
D'ailleurs, je te conseille de fuir xajax comme la peste.

Suite à une remarque de Sephi sur ce fil de discussion, j'aimerai vos avis sur l'ajax.


Ce que je souhaite faire :
Mes sites fonctionnent en pseudo-frame, j'aime ce système et je ne compte pas changer pour le moment. Malgré mon amour pour le couple clic / rechargement de page, j'avoue souvent que nombre de fois dans mon site, le rechargement est abusé pour une action aussi négligeable.
Je souhaite donc me perfectionner avec le fonctionnement Ajax

Déjà fait ou testé :
- Ajax avec Jquery : mon tchat était mon premier test et je n'ai pas aimé du tout, même si je suis arrivé a ce que je souhaitais faire, je n'ai pas poussé plus loin.
- Xajax : Découvert il y a quelque jours, intégrer dans ma nouvelle page sur l'espionnage, il permet d'attribuer les points d'expérience de son escouade sans recharger la page. Cela évite 3 clic à chaque attribution, ce qui facilite grandement la navigation.
Bizarrement j'ai très vite accroché avec la syntaxe, j'aime la façon de l'utiliser et je l'ai adapter à mon pseudo-frame pour que la librairie ne soit chargée que lorsqu'elle est utilisée. Évitant d'alourdir les autres pages du sites.

Mon problème :
Mon inexpérience et le manque de connaissance sur l'Ajax

le besoin :
Je reste un grand adepte du clic / rechargement. Je ne souhaite utiliser l'Ajax que pour des actions minimes comme attribuer des points d'expériences pour des unités.
Imaginez une grande liste de vaisseaux, actuellement le joueur clic, cela attribue l'expérience et le joueur se retrouve en haut de la page. C'est pas pratique et une ancre nommé n'est pas une solution viable à mon sens.
Ici Ajax me permet d'effectuer l'action sans bouger la page, le joueur peut continuer sa lecture et attriber l'expérience la ou il le souhaite. J'utiliserai donc toujours Ajax pour des actions sur des scripts extrêmement cours.

Mes question :
Sephi, pourquoi déconseiller l'utilisation de Xajax ?
Qu'utilisez-vous pour gérer et faciliter la gestion de vos scripts l'Ajax ?
Plus général, que me conseilleriez vous d'étudier dans ce sens ?


RE: Apprendre Ajax et bien choisir ses outils - php_addict - 18-08-2012

(18-08-2012, 12:57 PM)Damocorp a écrit : Qu'utilisez-vous pour gérer et faciliter la gestion de vos scripts l'Ajax ?
Plus général, que me conseilleriez vous d'étudier dans ce sens ?

perso je n'utilise ajax qu'avec JQUERY

certains de mes modules renvoient les données en JSON comme ca il sont interprétables en JS (au cas ou utilisés avec ajax) et interprétables par mes autres modules php (json_decode())

Après il est tout a fait possible que certains modules renvois soit en json, array() ou autres formats selon les besoins et selon les demandes.


RE: Apprendre Ajax et bien choisir ses outils - Aleskweb - 18-08-2012

Quand tu dis: "attribuer des points d'expériences pour des unités."
Je suppose que ça inclue des vérifications coté serveur? Donc l’exécution d'un script php, a part avec Ajax, je vois pas. Mais un $.getScript en Jquery est toujours pratique pour cela.

Tu as dit ne pas aimer Jquery, mais fais un tour ici si t'en as l'envie : http://api.jquery.com/category/ajax/
Après niveau plugins j'en connais pas trop


Sinon "Ici Ajax me permet d'effectuer l'action sans bouger la page, le joueur peut continuer sa lecture et attriber l'expérience la ou il le souhaite." Tu peux aussi passer par un POST puis forcer une ancre.


RE: Apprendre Ajax et bien choisir ses outils - djidi - 18-08-2012

J'avais commencé l'ajax avec xAjax il y a quelques années puis utilisé jQuery (et je suis pas pret de retourner sur xajax).
De ce que je me souviens la syntaxe est beaucoup plus complexe qu'un simple $.ajax() de jQuery. Et je préfère utiliser des méthodes tel que $.getJSON() qui permettent de renvoyer une multitude de données.


RE: Apprendre Ajax et bien choisir ses outils - Maks - 18-08-2012

Moi ce que je ferais ça serait de d'abord apprendre et comprendre le fonctionnement en Javascript simple, puis j'utiliserais ensuite jQuery pour aller plus vite.


RE: Apprendre Ajax et bien choisir ses outils - Aleskweb - 18-08-2012

Maks, sans s’éloigner trop du sujet. Par rapport a ta citation:
"Repeat after me: jQuery is not JavaScript. It is not the answer to every JavaScript-related question. When you have to write some JavaScript, do not instantly react with "Oh, I'll do that with jQuery!""

Y a t'il vraiment un écart de temps d’exécution entre l'utilisation de JQuery en plus de JavaScript et JavaScript pur?

Posons: document.getElementById('blabla').style.backgroundColor='red'; et $("#blabla").css('background-color' , 'red');
La différence de performance ou de temps d'exécution est existante?

Ou alors par principe, il vaut mieux utiliser Javascript pur?


RE: Apprendre Ajax et bien choisir ses outils - Sephi-Chan - 18-08-2012

Je déconseille fortement xajax car ça induit un couplage entre le client et le serveur. Un couplage qui n'a absolument pas lieu d'exister. Du coup, apprendre avec ça va te pousser à penser de la même manière quand tu le feras autrement.

Alors qu'en réalité, une page reste une page, qu'elle soit appelé via Javascript ou non. Elle a son URL, et son contenu. Si habituellement les scripts rendent du HTML, certains peuvent rendre du JSON, d'autres du XML.

Du coup, autant se contenter d'un appel tel que :


// URL de la forme `/shops/42/items`.
url = "/shops/" + shop.id + "/items"
$.getJSON(url, updateItemsList)

// URL de la forme `/buy_item.php?item_id=24`.
url = "/users/" + user.id + "/buy_item"
$.post(url, { item_id: item.id }, updateInventory);

Note que le premier exemple utilise une URL jolie (car j'utilise un framework qui dispose d'un routeur), mais avec du PHP crappy, tu auras plutôt des URL comme la seconde.

Ces mêmes frameworks te permettent simplement de réagir différemment selon le format de réponse qu'on demande. Par exemple l'URL /shops/42.png pourrait rendre l'avatar du magasin, alors que /shops/42.json pourrait rendre un objet JSON contenant les infos du magasin, et /shops/42/items.json?number=10&from_id=42 renverrait un descriptif de 10 objets à partir de l'objet d'ID 42 (pour faire une pagination en Ajax, par exemple).


(18-08-2012, 01:31 PM)Aleskweb a écrit : Y a t'il vraiment un écart de temps d’exécution entre l'utilisation de JQuery en plus de JavaScript et JavaScript pur?

Dans la plupart des cas, tu n'auras pas de pénalité de performance perceptible avec jQuery. Et ce sera toujours bien plus lisible, donc préférable.

Cependant, dans certains cas particuliers où un fragment de code est exécuté à une fréquence élevée, comme dans un jeu Canvas ou un listener sur l'event mousemove), ça peut devenir plus problématique.


RE: Apprendre Ajax et bien choisir ses outils - Maks - 18-08-2012

(18-08-2012, 01:31 PM)Aleskweb a écrit : Maks, sans s’éloigner trop du sujet. Par rapport a ta citation:
"Repeat after me: jQuery is not JavaScript. It is not the answer to every JavaScript-related question. When you have to write some JavaScript, do not instantly react with "Oh, I'll do that with jQuery!""

Y a t'il vraiment un écart de temps d’exécution entre l'utilisation de JQuery en plus de JavaScript et JavaScript pur?

Posons: document.getElementById('blabla').style.backgroundColor='red'; et $("#blabla").css('background-color' , 'red');
La différence de performance ou de temps d'exécution est existante?

Ou alors par principe, il vaut mieux utiliser Javascript pur?

C'est une citation que j'ai récupérée d'un forum US, elle me plaisait bien Smile
Ca veut surtout dire, jQuery n'est pas Javascript. Pas spécialement de rapport avec le temps d’exécution ^^

Mais Sephi a bien résumé. Il n'y a pas de différence de performance réellement perceptible dans le cas d'une app classique. Dans le cas de mon jeu, dans la boucle de rendu, il y avait une perte de performance car la fonction est appelée très souvent. J'avais besoin de mettre à jour les FPS dans une div, j'ai remplacé $(sel).textContent() par document.getElementById().textContent(). J'avais besoin de transformer un hash en un tableau classique. J'ai remplacé _.toArray par Array.prototype.slice.call(). J'avais besoin d'arrondir, j'ai remplacé Math.round(num) par num + 0.5 << 0. C'est vraiment des cas précis quoi Smile

Sinon dans tous les autres cas je préfère utiliser jQuery, tout simplement parce que c'est moins verbeux ! En écrivant du CoffeeScript + jQuery j'ai l'impression d'écrire deux fois moins de mots que si j'écrivais du Javascript pur.

Fin du hs ^^


RE: Apprendre Ajax et bien choisir ses outils - Damocorp - 18-08-2012

Citation :Sinon "Ici Ajax me permet d'effectuer l'action sans bouger la page, le joueur peut continuer sa lecture et attriber l'expérience la ou il le souhaite." Tu peux aussi passer par un POST puis forcer une ancre.
Oui mais comme dis dans mon message, je ne considère pas cela comme une bonne solution, car cela crée un clignotement de l'image, tu vois le rechargement de la page.
Si la page ne bouge pas après l'action, j'estime qu'Ajax est plus approprié.
Si la page bouge après l'action, je préfère mon système de clic / rechargement à l'ajax

Citation :Moi ce que je ferais ça serait de d'abord apprendre et comprendre le fonctionnement en Javascript simple, puis j'utiliserais ensuite jQuery pour aller plus vite.
Repartir sur de bonnes bases est une idée intéressante.


Citation :Note que le premier exemple utilise une URL jolie (car j'utilise un framework qui dispose d'un routeur), mais avec du PHP crappy, tu auras plutôt des URL comme la seconde.
J'aime bien la façon dont les urls sont écrites. Je n'ai pas encore consacré de temps à l'url rewriting. Mais je compte voir cela en étudiant les framework Zend et Symfony2 pour commencer. ( j'ai vu sur le net qu'il disposait d'un routeur, je pourrai donc m'amuser à découvrir cela aussi ).


Donc finallement pour y voir plus clair je vais :

- refaire ma page en virant Xajax et en n'utilisant que du javascript
- Refaire ma page en changeant le javascript par de l'écriture Jquery.

Ça devrais m’occuper un moment, et m'aider à mieux appréhender cela.
Merci pour vos infos.


RE: Apprendre Ajax et bien choisir ses outils - archANJS - 18-08-2012

À bas l'AJAX, vive l'AJAJ !