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 :

JavaScript dans HTML, Externe ou Inline ?


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut JavaScript dans HTML, Externe ou Inline ?
    Bonjour,

    J'ai pour habitude de stocker les codes javascript réutilisables dans des fichiers externes et les codes plus locaux à une page (genre ceux qui référencent des IDs et des éléments spécifiques) directement inline dans des balises script en fin de document.

    Je peux constater sur d'autres forums (stackoverlow pour ne pas le citer) que de plus en plus de gens suggèrent d'externaliser systématiquement tout le JS dans des fichiers externes. Soi-disant ce serait meilleur pour le caching (mais à ma connaissance c'est tout de même au prix d'une connection supplémentaire, il me semble que google page speed suggérait plutôt d'embarquer quand je l'utilisais) et c'est facilement optimisable et minifiable.

    Dans mon cas cela voudrait dire une quinzaine de fichiers JS supplémentaires, cependant je dois reconnaître que mes balises script sont parfois grandes et que le mélange html et js embarqué est parfois un peu pénible à la lecture. Un peu de séparation serait donc bienvenue... Pour être honnête, je ne sais pas trop s'il y a des bonnes pratiques admises par tous en la matière. Je réfléchis aussi à utiliser un loader au cas où je me mettrai à beaucoup externaliser, je sais pas trop...

    Vous qui avez l'habitude, quelles sont vos stratégies d'externalisation?

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 855
    Par défaut
    salut,

    Je ne suis pas sure que l'on puisse définir une règle générale tellement les systèmes sont hétérogènes (surtout avec l'augmentation des appareils mobiles).

    Sur les systèmes embarqués, le nombre de connexion est très limité : il faut donc limiter le nombre de fichier au maximum ...

    Si tu mets tous tes éléments "static" dans un seul fichier, tu auras donc des perf optimales (le cache marchera et tu aura un nombre de connexion réduites).
    => par contre pour la maintenance du code, ce n'est pas top pour s'y retrouver.

    Remarque : les pages static peuvent etre compressée à l'avance (GZIP) ce qui aussi améliore les perf

  3. #3
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    Hello,
    Je te remercie pour ta réponse, j'ai pas répondu tout de suite pour laisser le temps aux autres mais je crois que c'est tout ce que j'aurai.
    ++

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    c'est tout de même au prix d'une connection supplémentaire
    pour le premier chargement
    les autres connections se faisant vers le cache
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Invité de passage
    Femme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1
    Par défaut
    Si tu as une quinzaine de fichier, je te conseil d'utiliser require.js pour charger tout dans la page.

    Ça donne l'habitude de coder tout en petit modules indépendant, puis ils pourront être compatible avec Node.js si un jour tu voudrais les porter sur le serveur.

    De plus, ça prend une simple commande dans ton terminal pour executer r.js qui condense tout en 1 fichier. Et tu peux faire plusieurs "build" pour tes differentes pages

  6. #6
    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
    Il y a deux caches à prendre en compte.

    solution 1 html purement statique + js inline

    1ere ouverture:
    connexion -> download -> mise en cache web -> compilation js -> mise en cache js -> exécution

    ouverture suivantes:
    lecture dans le cache web -> compilation js -> mise en cache js -> exécution

    solution 2 html dynamique + js inline
    toutes les ouvertures
    connexion -> download -> mise en cache web -> compilation js -> mise en cache js -> exécution

    solution 3 html statique + js externe

    1ere ouverture:
    connexion -> download -> mise en cache web -> affichage
    connexion -> download -> compilation js -> mise en cache js -> exécution

    ouverture suivantes:
    lecture dans le cache web -> affichage
    lecture dans le cache js -> exécution

    solution 4 html dnamique + js externe

    1ere ouverture:
    connexion -> download -> mise en cache web -> affichage
    connexion -> download -> compilation js -> mise en cache js -> exécution

    ouverture suivantes:
    connexion -> download -> mise en cache web -> affichage
    lecture dans le cache js -> exécution


    en conclusion lorsque le js est externe il est compilé et mis dans le cache js déjà compilé
    il est donc dispos pour tous les appel suivants, il est simplement exécuté.
    c'est pour cette raison qu'on voit des appli qui n'ont qu'une seul JS contenant tout le code même si tout n'est pas utilisé dès le début.

    le cas le pire (et pourtant celui que l'on voit le plus souvent) le js enbarqué dans du html dynamique (génré)
    dans ce cas le js est rechargé à chaque appel mais en plus il est recompilé à chaque fois avant d'être exécuté.

    perso je penche donc toujours vers l'externalisation.
    mais je suis quelqu'un de pargmatique
    si le js est tout petit (juste quelque ligne) le coût de recompilation est négligeable.

    dans mes dev j'ai généralement un seul html qui est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <html>
      <head>
        <link href="app.css" />
        <script src="app.js" />
      </head>
      <body />
    </html>
    la question ne se pose donc pas.

    A+JYT

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

Discussions similaires

  1. Insertion javascript dans html
    Par bisdel dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 22/10/2011, 17h25
  2. Injection de javascript dans html
    Par Tristan Zwingelstein dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/10/2011, 20h39
  3. Controle champs numérique avec JAVAScript dans html
    Par aminooos dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 30/09/2011, 19h40
  4. javascript dans html referencable?
    Par éloi_75 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 14/09/2007, 00h15
  5. [DOM] fonction javascript dans html
    Par nopnop dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/04/2007, 09h53

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