История изменений
Исправление 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);
}
А вот имея модули, уже можно заниматься колдунством. Например, обрамить свой код вызовом require, который как раз и обеспечит подгрузку того, что вам нужно.
Кроме того, код головного модуля можно так же загружать «на лету». В dojo это выглядит так:
require([
"dojo/parser",
"mycompany/myApp",
"dojo/domReady!"
],
function(parser, myApp){
parser.parse().then(function(){
new myApp.init();
});
});
Фактически, это все, что я обычно размещаю в заголовке страницы.
Исходная версия 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);
}
А вот имея модули, уже можно заниматься колдунством. Например, обрамить свой код вызовом require, который как раз и обеспечит подгрузку того, что вам нужно.
Кроме того, код головного модуля можно так же загружать «на лету». В dojo это выглядит так:
require([
"dojo/parser",
"mycompany/myApp",
"dojo/domReady!"
],
function(parser, myApp){
parser.parse().then(function(){
new myApp.init();
});
});