2015-07-21 2 views
0

Мне нужно включить несколько js-файлов синхронно, и после их успешного включения я позвоню function main(), который создаст виджет. Для этого в настоящее время я построил функцию, таким образомЗагрузка файлов .js с использованием javascript синхронно

var scriptArrayHC = [retrieveURL()+"/js/bootstrap.min.js", 
        "//platform.twitter.com/widgets.js", 
        retrieveURL()+"/js/html5shiv-2.js", 
        retrieveURL()+"/js/ie-emulation-modes-warning.js", 
        retrieveURL()+"/js/ie10-viewport-bug-workaround.js"]; 
function loadScript(scriptArray, func){ 
    var counter_script=0; 
    [].forEach.call(scriptArray, function(src){ 
     var script = document.createElement('script'); 
     script.onload = function() { 
      counter_script++; 
      //console.log("Script "+counter_script+" --- "+src); 
      if(counter_script==scriptArray.length) eval(func); 
     }; 
     script.src = src; 
     document.getElementsByTagName('head')[0].appendChild(script); 
    }); 
} 

loadScript(scriptArray, "main()"); 

Это работает нормально .. Но я думаю, что это не самый лучший способ. У кого-нибудь есть лучший способ сделать это или есть библиотека для этого?

+0

Почему не динамическая асинхронная загрузка (требуется/browserify/WebPack/JSPM/этажерки)? – Amit

+0

Прокопайте через RequireJS на [git] (https://github.com/jrburke/requirejs). Пока он загружает js _async_, он, похоже, добавляет скрипты в заголовок и может быть далеко от того, что вы пытаетесь достичь, - посмотрите вокруг кода, я уверен, что они приблизились к тому, что является _best way_ , –

+0

Будет ли динамическая загрузка async обрабатывать зависимость одного js-файла на другом? – void

ответ

0

USE RequireJS решить проблему

+0

Поддерживает ли это CSS и JS? – void

+0

Да, он обрабатывает как CSS, так и JS, более подробную информацию здесь: http://requirejs.org/docs/faq-advanced.html – GibboK

Смежные вопросы