Bonjour à tous, j'aimerais recevoir les critiques d'une fonction que j'utilise de temps en temps. En fait je ne sais pas si il est intéressant de m'en servir, si elle respecte les bonnes pratiques de développement ou si tout simplement elle est bien développé mais en tout cas je tiens à préciser que j'ai pris plaisir à la créer

Il s'agit simplement d'un loader de script qui permet de charger des scripts (obvious) dans le bon ordre (c'est la ou je voulais en venir ). Bref voici le code et l'utilisation.
loader.js:
Code jQuery : 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
39
 
var loadScript = (function ($) {
  if ($) {
    jQuery.loadScript = function (url, options) {
      options = $.extend(options || {}, {
        dataType: "script",
        async: false,
        url: url
      });
 
      return jQuery.ajax(options);
    };
 
    return function (urls, path) {
      var queue = urls.map(function (script) {
          return $.loadScript((typeof path !== 'string' ? '' : path) + script + '.js');
      });
 
      $.when.apply(null, queue)
        .done(function () {
          var strUrl = '';
 
          for (var i = 0; i < arguments.length; i++) {
            strUrl += ' "' + urls[i] + '"' + (i !== arguments.length-1 ? ',' : '');
          }
 
          console.log('%c' + strUrl + (urls.length > 1 ? ' have' : ' has') + ' been loaded', 'color: blue;');
        })
 
        .fail(function (a, b, c) {
          for (var i = 0; i < urls.length; i++) {
            if (this.url.split('?')[0] === urls[i]) {
              throw new Error('failed to load ' + urls[i] + ', Message "' + b + ': ' + c + '"');
            }
          }
        });
    }
  }
}($));

appel.html
Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
<script src="js/loader.js"></script>
<script type="text/javascript">
  loadScript(
    ['leaflet-src', 'NonTiledLayer', 'NonTiledLayer.WMS', 'google', 'tooltip', 'map.handler', 'local', 'utils', 'intersects', 'leaflet.contextmenu'], 
    'js/map/'
  );
</script>