IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

G�rer ses donn�es Javascript


Sujet :

JavaScript

  1. #1
    Membre �prouv�
    Profil pro
    Inscrit en
    F�vrier 2004
    Messages
    1 825
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 1 825
    Par d�faut G�rer ses donn�es Javascript
    Bonjour � tous,

    Je poss�de une application Web qui consomme pas mal de donn�es c�t� client, donc en JavaScript.

    Les donn�es sont issues d'une bases de donn�es, elles transitent par du PHP qui les renvoie en JSon pour atterrir dans des structures JavaScript.

    Au final, �a arrive dans ce type de code :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    function Client() {
       this.m_lId = -1;
       this.m_strFirstName = "";
       this.m_strLastName = "";
    }
    Client.prototype = {
       getId: function() {
          return this.m_lId;
       },
       getFirstName: function() {
          return this.m_strFirstName ;
       },
       getLastName: function() {
          return this.m_strLastName ;
       },
    }
     
    function Contrat() {
       this.m_lId = -1;
       this.m_lClientId = -1;
       this.m_iType = -1;
       this.m_strProduct = "";
    }
    Contrat.prototype = {
       getId: function() {
          return this.m_lId;
       },
       getClientId: function() {
          return this.m_lClientId;
       },
       getType: function() {
          return this.m_iType ;
       },
       getProduct: function() {
          return this.m_strProduct ;
       },
    }
    Et il y a un mapping pour int�grer une r�ponse JSon dans ces types JavaScript afin de d�coupler le nommage PHP de celui de JavaScript.

    Tout �a fonctionne tr�s bien aujourd'hui, mais �tant d�butant j'aimerais savoir si c'est comme �a, en g�n�ral, qu'il faille proc�der o� s'il y avait une biblioth�que pour g�rer ce genre de besoin plut�t basique.

    En revanche, ce qui m'int�resse davantage, c'est l'accession aux donn�es, par exemple pour retrouver les contrats d'un client je rajouter dans le prototype de Client cette fonction :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
    getContracts: function() {
       var ret = [];
       for(var c in g_contracts)
          if(g_contracts[c].getClientId() == this.m_lId)
             ret.push(g_contracts[c]);
       return ret;
    }
    Je trouve ce code tr�s moche pour un besoin aussi courant, et ici ce n'est qu'un exemple mais lorsque la structure s'alourdit, la complexit� algorithme est exponentielle et les performances en p�tissent. De plus, la taille de ce genre de code alourdit grandement le fichier JS et donc le temps de chargement de la page.

    Alors je me dis qu'en 2015 il doit y avoir des outils / une technique, pour mieux g�rer ses donn�es, de mani�re plus rapide et plus propre que �a, ou pas..

    Pourriez-vous me dire les bons usages et coutumes � employer lorsque l'on se retrouve dans ce cas l� en JavaScript ?

    Merci par avance,

    A bient�t

  2. #2
    Expert confirm�
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par d�faut
    Pour moi �a ne d�pend pas du langage, mais je pense que tu devrais inscrire le contrat sur l'objet client associ� au moment o� tu construis le contrat. Autrement dit, cr�er des liens r�ciproques. Ainsi ta structure de donn�es sera toujours coh�rente.
    La FAQ JavaScript � Les cours JavaScript
    Touche F12 = la console → l�outil indispensable pour d�velopper en JavaScript !

  3. #3
    Expert confirm�
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Urbaniste
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par d�faut
    Citation Envoy� par mister3957 Voir le message
    ...
    Je trouve ce code tr�s moche pour un besoin aussi courant, et ici ce n'est qu'un exemple mais lorsque la structure s'alourdit, la complexit� algorithme est exponentielle et les performances en p�tissent.
    ...
    Merci par avance,

    A bient�t
    Tous les designs patterns que tu connais dans d'autres langage peuvent �tre impl�ment� en javascript

    La question en ce qui concerne les lib c'est que cherches tu exactement car il y a tant d'approche pour g�r� ce genre de pb qu'il n'est pas possible de lister toutes les impl�mentation possible de ces approches.

    De plus si les librairies se concentrent sur une probl�matique (ici l'acc�s au donn�es) les frameworks eux propose une approche globale et couvre (ou tente de couvrir) tous les aspect du dev d'une application.

    Sencha par exemple propose un framwork qui prend en charge l'acc�s au donn�es mais aussi la mod�lisation, la connexion � diverses sources, le tri local distant, le filtrage local distant, la pagination ,l'affichage l'�dition de donn�es
    mais aussi tous le reste de l'appli controlleur view etc.
    http://www.sencha.com/blog/deep-dive...ext-js-5-data/


    Je ne connais pas de lib qui prenne en compte sp�cifiquement ce probl�me.
    le probl�me dans ce cas c'est que g�n�ralement on utilise d'autres libs pour la manipulation du DOM pour Ajax pour l'affichage de composants complexe. du coup il faut trouver la lib qui va �tre compatible avec toutes les lib qu'on utilise.

    A+JYT

  4. #4
    R�dacteur/Mod�rateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par d�faut
    Il faudrait pr�ciser exactement quel besoin tu as, j'ai l'impression que ta solution fonctionne d�j� bien. Pour l'acc�s aux donn�es, une fonction comme celle que tu as propos� fait tr�s bien l'affaire (tu peux utiliser array.filter plut�t qu'un for/push). On ne perd quasiment rien en performances, si c'est le cas �a veut dire que tu charges trop de donn�es c�t� client ou alors qu'il y a une �normit� dans une de tes fonctions.

    Si tu as l'impression que le code est inutilement compliqu�, peut-�tre est-ce ton mod�le JSON qui est mal con�u. Par exemple si tu as souvent besoin d'acc�der aux contrats d'un client par l'ID client, peut-�tre qu'un objet :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    var contrats = { monClient1: 
    [liste contrats], monClient2: 
    [liste contrats] };
    est plus appropri� qu'une liste
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    var contrats = [ { idClient: "monClient1", ... }, { idClient: "monClient2", ... } ]
    Il n'y a pas vraiment de biblioth�que pour aider � la gestion des donn�es, c'est plus une question d'organisation et de conception. On trouve en revanche des biblioth�ques JS pour la validation de donn�es, le cryptage, la surveillance ou le stockage persistent c�t� client. A voir si cela fait partie de tes besoins.

  5. #5
    Membre �prouv�
    Profil pro
    Inscrit en
    F�vrier 2004
    Messages
    1 825
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 1 825
    Par d�faut
    Ok, merci pour vos r�ponses,

    C'�tait juste pour savoir s'il y avait une biblioth�ques quelque part pour faire quelque chose comme ceci :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    contrats[] = find_array(g_contract, client, m_lId, m_ClientId)
    Et ce � plusieurs niveaux (structures interm�diaires). En gros des requ�tes sur les donn�es avec la possibilit� de jointure.

    Sinon je peux le faire, c'est juste que s'il y avait une biblioth�que pour �a, test�e, valid�e et approuv�e, �a m'aurait arrang�

  6. #6
    Expert confirm�
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par d�faut
    Si une lib fait �a, elle utilise forc�ment un for/push, un array.filter ou autre technique similaire en interne. Elle ne te fera pas gagner en performances.
    La FAQ JavaScript � Les cours JavaScript
    Touche F12 = la console → l�outil indispensable pour d�velopper en JavaScript !

  7. #7
    Membre �prouv�
    Profil pro
    Inscrit en
    F�vrier 2004
    Messages
    1 825
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 1 825
    Par d�faut
    Non mais peut-�tre en temps de d�veloppement, en clart� de code et en confiance, �tant donn� que ce n'est pas ma meilleure tasse de th�, j'aurais plus pr�f�r� faire confiance � quelque chose bien en place qu'� mes gros doigts boudin�s

    Il y a des biblioth�ques pour g�rer les appels asynchrones, les manipulation du DOM etc. donc la question de la manipulation d'une structure de donn�es s'�tait l�gitimement laiss� pos�e

    Dans le cas ultra simple pr�sent� dans ce sujet, c'est pas une montagne, en revanche on pourrait vouloir utiliser des recherches � base d'expressions r�guli�res, des syst�mes de coh�rence (interdit d'avoir un contrat dont le client n'est pas r�f�renc�), donc interdit de retirer un client des donn�es sans avoir au pr�alable vir� les contrats correspondants.

    Je vais donc pr�voir ce genre de fonctionnalit�, mais dommage qu'une lib ne le propose pas, �a para�t tellement courant..

    En tout cas merci beaucoup � vous

  8. #8
    Membre �prouv�
    Profil pro
    Inscrit en
    F�vrier 2004
    Messages
    1 825
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 1 825
    Par d�faut
    Non je n'ai pas regard� Sencha, juste not�

    Je vais checker �a ce soir ou demain matin.

    Merci � toi

  9. #9
    Expert confirm�
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par d�faut
    Vous �tes rapides aujourd'hui tous !

    J'ai supprim� mon dernier post car en fait c'�tait un b�tise. J'avais mal lu le post de Sekai, il disait en r�alit� que, selon lui, il n'y a pas de lib pour ton besoin pr�cis. Mais �a vaut le coup de regarder quand m�me

    Je vais rajouter que, vu que �a peut se faire en 3 lignes de code (par exemple avec un array.filter), peut-�tre que le besoin d'�crire une lib pour �a ne s'est jamais fait ressentir. Avant toi en tout cas
    La FAQ JavaScript � Les cours JavaScript
    Touche F12 = la console → l�outil indispensable pour d�velopper en JavaScript !

  10. #10
    R�dacteur/Mod�rateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par d�faut
    +1 avec Watlin. Pour ce genre de choses, les fonctions filter / every / some / find / findIndex du prototype Array sont l� pour �a et font tr�s bien le travail. Une biblioth�que n'apporterait pas grand chose. On peut quand m�me citer underscore.js et son pendant lodash, qui ont beaucoup de fonctions utilitaires qui pourraient peut-�tre s'av�rer utile pour toi.

    http://underscorejs.org/
    https://lodash.com/

  11. #11
    Expert confirm�

    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de D�me (Auvergne)

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par d�faut
    Salut,

    Oui d'autant plus que tu dis que ton application consomme pas mal de ressources en javascript. Alors charger une lib pour des op�rations simples te ferait une couche consommatrice de ressources inutiles en plus... Quand on charge une lib faut que cela en vaille un minimum la peine et rien ne le justifie dans les exemples que tu nous montre

Discussions similaires

  1. R�ponses: 0
    Dernier message: 06/09/2010, 20h18
  2. R�cup�rer ses donn�es apr�s formatage
    Par S�kiltoyai dans le forum Composants
    R�ponses: 7
    Dernier message: 21/04/2007, 18h01
  3. [Persistance]G�rer des donn�es
    Par Battosaiii dans le forum JDBC
    R�ponses: 5
    Dernier message: 10/12/2005, 20h38
  4. R�ponses: 12
    Dernier message: 11/04/2005, 18h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo