LINUX.ORG.RU

История изменений

Исправление k0valenk0_igor, (текущая версия) :

Я лично предпочитаю подгружать по мере надобности.

Если вы пойдете этим путем, то вам понадобятся модули и механизм который их умеет грузить «на лету». Сам по себе механизм этот штука довольно простая:

function loadScriptAsync(src, callback){
  var s,r,t;
  r = false;
  s = document.createElement('script');
  s.type = 'text/javascript';
  s.src = src;
  s.onload = s.onreadystatechange = function() {
       if ( !r && (!this.readyState || this.readyState == 'complete') ) {
      r = true;
      callback();
    }
  };
  t = document.getElementsByTagName('script')[0];
  t.parent.insertBefore(s, t);
}
Но в реальной жизни этот скрипт конечно помогает мало, а то, что реально помогает раз в 10 сложнее, с учетом кросс-платформенности и проверок зависимостей. Так что я бы посоветовал вам взять какой-нибудь тулкит, в котором такой механизм есть. Например, - Dojo.

А вот имея модули, уже можно заниматься колдунством. Например, обрамить свой код вызовом require, который как раз и обеспечит подгрузку того, что вам нужно.

Кроме того, код головного модуля можно так же загружать «на лету». В dojo это выглядит так:

require([
    "dojo/parser",
    "mycompany/myApp",
    "dojo/domReady!"
],
    function(parser, myApp){
        parser.parse().then(function(){
                    new myApp.init();
         });
    });
Данный код гарантирует, что парсинг страницы будет проведен не ранее, чем будут загружены все требуемые модули, а приложение myApp, находящеся в одном из них, будет создано и проинициализировано только после парсинга.

Фактически, это все, что я обычно размещаю в заголовке страницы.

Исходная версия k0valenk0_igor, :

Я лично предпочитаю подгружать по мере надобности.

Если вы пойдете этим путем, то вам понадобятся модули и механизм который их умеет грузить «на лету». Сам по себе механизм этот штука довольно простая:

function loadScriptAsync(src, callback){
  var s,r,t;
  r = false;
  s = document.createElement('script');
  s.type = 'text/javascript';
  s.src = src;
  s.onload = s.onreadystatechange = function() {
       if ( !r && (!this.readyState || this.readyState == 'complete') ) {
      r = true;
      callback();
    }
  };
  t = document.getElementsByTagName('script')[0];
  t.parent.insertBefore(s, t);
}
Но в реальной жизни этот скрипт конечно помогает мало, а то, что реально помогает раз в 10 сложнее, с учетом кросс-платформенности и проверок зависимостей. Так что я бы посоветовал вам взять какой-нибудь тулкит, в котором такой механизм есть. Например, - Dojo.

А вот имея модули, уже можно заниматься колдунством. Например, обрамить свой код вызовом require, который как раз и обеспечит подгрузку того, что вам нужно.

Кроме того, код головного модуля можно так же загружать «на лету». В dojo это выглядит так:

require([
    "dojo/parser",
    "mycompany/myApp",
    "dojo/domReady!"
],
    function(parser, myApp){
        parser.parse().then(function(){
                    new myApp.init();
         });
    });