Logo JavaScript

DSL ou ajout et exécution dynamique de scripts

Flattr this!

Un développeur croisé au hasard du net était convaincu qu'on ne pouvait pas exécuter des fichiers de script Javascript chargés à la volée après l'évènement DomReady. Ce qui est totalement faux. Je vais vous expliquer le principe dit Dynamic Script Loading ou DSL.

Exemple

La meilleure façon de le prouver est de mener une expérience simple. On a besoin de deux fichiers. Un fichier HTML dont vous m'excuserez la syntaxe honteuse :

<html>
    <head>
        <script type="text/javascript">
            document.write('<script src="', 'script.js', '" type="text/javascript"><\/script>');
        </script>
    </head>
</html>

Et un fichier JS (même dossier et appelé script.js) :

alert("Hello world!");

Vous aurez remarqué dans le fichier HTML une ligne de script JS qui appelle notre fichier JS dès qu'il le peut évènement DomReady déclenché ou non.

Ouvrez maintenant votre fichier HTML dans votre navigateur. Vous avez bien une boite de dialogue d'alerte qui vous dit "Hello world!".

C'est ça le DSL, c'est la possibilité naturelle offerte à Javascript de charger à la volée à tout moment un fichier de scripts supplémentaire qui est aussitôt exécuté.

Comment en bénéficier

Rien à faire, c'est natif au langage. Comme vous avez pu le tester vous même. Pas besoin de vous acharner avec des eval comme je l'ai vu suggérer par certaines personnes ou je ne sais encore quelle technique barbare.

L'anecdote

Tout le monde s'est littéralement extasié devant Ajax et s'y est jeté tête baissée. Moi compris. Et ceci n'est en soit pas un tort. C'était considéré comme une révolution dans le monde du développement web. Maintenant que vous savez que le DSL existe, si je vous dit que ça date d'avant Ajax, vous trouvez toujours que ce dernier tranche dans les fondements de Javascript ? 😉

Même si Ajax a ouvert notre horizon des possibilités, il a eu un ancêtre plus modeste, plus simpliste mais qui faisait la même chose : faire une requête dynamique au serveur.

Flattr this!

A propos de Mathieu

Ingénieur développeur web dans la vente par correspondance B2B, adepte de nouvelles technologies et d'innovation. Vous pouvez aussi me retrouver sur Twitter @mathrobin
Cette entrée a été publiée dans JavaScript, avec comme mot(s)-clef(s) , , . Vous pouvez la mettre en favoris avec ce permalien.
  • http://www.geek-directeur-technique.com Amaury

    Oui, et avant l’AJAX, on utilisait déjà le chargement de Javascript dynamique en passant par des frames..
    L’astuce consistait à faire charger une certaine URL par une frame. En fonction de l’URL demandée, et des éventuels paramètres qui lui étaient transmis, la page récupérée exécutait du code Javascript qui pouvait « faire des choses » sur l’ensemble de la page.

    La seule limitation était qu’on pouvait passer des paramètres GET, et pas POST.

Articles liés