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 :

Découpage de fichiers Javascript


Sujet :

JavaScript

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 834
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 834
    Points : 990
    Points
    990
    Par défaut Découpage de fichiers Javascript
    Bonjour,

    J'ai un fichier Javascript qui contient un script avec à l'intérieur une variable globale qui contient les infos d'une BDD :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var bdd = [{"id":100, "name":"foo", ...}, ...];
    Pour faciliter la maintenance du code, j'ai déclaré cette variable dans un fichier séparé qui se nomme "bdd.js".

    Mon script principal utilise la variable de cette manière :
    Code html : 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
    <!doctype html>  
    <html lang="fr">  
    	<head>  
    		<meta charset="utf-8">
    		<meta name="viewport" content="width=device-width, initial-scale=1">
     
    		<title>TITLE</title>  
     
    		<link rel="stylesheet" href="styles.css">
    	</head>
     
    	<body>
    		<div id="content">
    		</div>
     
     
    		<script src="js/jquery.js"></script>
    		<script src="script.js"></script>
                    <script src="bdd.js"></script>
    	</body>  
    </html>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $(document).ready(function() {
       updateWebPage(bdd);
    });
    La structure du code est bonne ?... Ma fonction updateWebPage() va s’exécuter uniquement si les deux fichiers .js sont chargés ?... que se passe va t'il se passer si le chargement de "bdd.js" prend du temps par rapport à "script.js" ?

    PS : je ne veux pas utiliser AJAX car je veux que mon script fonctionne aussi en local pour faciliter les tests (pas besoin d'installer un outils comme MAMP sur le PC de dev).
    PS2 : dans un second temps, j'aimerais pouvoir minimifier et fusionner tous les fichiers (html, css, js, images, ...)... existe t-il un outils simple d'installation et d’utilisation pour faire ça ?... c'est un petit projet, je n'ai donc pas envie d'installer une grosse toolchain pour faire ça.

    Merci d'avance,

  2. #2
    Membre averti Avatar de ASCIIDEFOND
    Homme Profil pro
    Autodidacte passionné
    Inscrit en
    Novembre 2002
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Autodidacte passionné

    Informations forums :
    Inscription : Novembre 2002
    Messages : 235
    Points : 441
    Points
    441
    Par défaut
    Salut boboss123,

    Et avec l'évènement load https://developer.mozilla.org/fr/doc...dow/load_event

    Code HTML : 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
    <!doctype html>  
    <html lang="fr">  
    	<head>  
    		<meta charset="utf-8">
    		<meta name="viewport" content="width=device-width, initial-scale=1">
    		<title>TITLE</title>
                    <script src="bdd.js"></script>
                    <script src="js/jquery.js"></script>
    		<link rel="stylesheet" href="styles.css">
    	</head>
    	<body>
    		<div id="content">
    		</div>
    		<script src="script.js" defer></script>
    	</body>  
    </html>

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    content= document.getElementById('content');
     
    window.addEventListener("load", function () {
        content.innerText = updateWebPage()
    })

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function updateWebPage() {
        var bdd = [{ "id": 100, "name": "foo" }];
        return(`${bdd[0]["id"]} = ${bdd[0]["name"]}`)}

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 834
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 834
    Points : 990
    Points
    990
    Par défaut
    ok merci

  4. #4
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 886
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 886
    Points : 3 725
    Points
    3 725
    Par défaut
    Salut,

    Attention il me semble que ce n'est pas l'usage d'un gestionnaire pour l’événement "load" qui résout le problème...

    La solution c'est l'ordre des balises, Il faut les mettre dans un ordre tel que l'on évite d'utiliser un objet avant qu'il soit défini... En l’occurrence il faut que la balise <script src="bdd.js"></script> soit placé en premier, pour être chargé avant les autres scripts qui utilisent l'objet bdd...

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 834
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 834
    Points : 990
    Points
    990
    Par défaut
    Salut,

    C'est sûr ?

    J'aurai pensé que l'ordre des balises donne l'ordre dans lequel les requêtes de téléchargement doivent être effectuées mais ne garanti pas que l’exécution d'un script d'un fichier soit exécuté uniquement si le fichier précédent a été chargé.

  6. #6
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 886
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 886
    Points : 3 725
    Points
    3 725
    Par défaut
    Salut,

    Citation Envoyé par boboss123 Voir le message
    C'est sûr ?

    J'aurai pensé que l'ordre des balises donne l'ordre dans lequel les requêtes de téléchargement doivent être effectuées mais ne garanti que l’exécution d'un script d'un fichier soit exécuté uniquement si le fichier précédent a été chargé.
    - Les scripts sont chargés et exécutés (tout de suite après le chargement) dans l'ordre dans lequel ils apparaissent dans le document HTML*...

    En l’occurrence si tu places la balise <script src="bdd.js"></script> en premier (avant les autres scripts) le script bdd.js devrait être chargé puis exécuté avant de passer au script suivant...

    La solution c'est donc l'ordre des balises...

    - On utilise un gestionnaire pour l’événement "load" pour résoudre un autre problème... Comme on peut le lire ici : https://developer.mozilla.org/fr/doc...dow/load_event

    L'évènement load est déclenché lorsque la page et toutes ses ressources dépendantes (telles que des feuilles de style et des images) sont complètement chargées.
    Il est bien dit "...lorsque la page et toutes ses ressources dépendantes..." et non "lorsque les scripts précédents sont complètement chargées et exécutés"...


    * C'est le comportement par défaut qui peut être changé avec les attributs async et defer...

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 834
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 834
    Points : 990
    Points
    990
    Par défaut
    ok merci pour ces précisions

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#] Pb de découpage de Fichier
    Par mimibobo dans le forum C#
    Réponses: 4
    Dernier message: 25/10/2006, 14h46
  2. Probleme import fichier javascript
    Par snoozer dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 30/08/2006, 11h59
  3. appel fichier javascript
    Par bressan dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 15/06/2006, 16h51
  4. fichier javascript externe
    Par Dave Lopeur dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 15/05/2006, 11h30
  5. découpage de fichier image + texte
    Par dirty_boy dans le forum C
    Réponses: 8
    Dernier message: 13/03/2006, 18h42

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