Пользователь Google Closure, чтобы лениво загружать JavaScript - PullRequest
2 голосов
/ 27 сентября 2010

Мне особенно нравится возможность требовать другие классы javascript с помощью Google Closure, но мне интересно, возможно ли использовать goog.require для отложенной загрузки других классов javascript. Когда я пытаюсь использовать goog.require после загрузки страницы, она, кажется, обновляется или гаснет :( Есть ли способ получить скрипт по требованию и, возможно, настроить его с помощью обратного вызова, чтобы я мог запустить некоторый JavaScript, когда он загрузится?

Ответы [ 2 ]

4 голосов
/ 17 декабря 2010
3 голосов
/ 28 сентября 2010

goog.require не предназначен для загрузки любого скрипта.Однако в файлах сценариев с отложенной загрузкой нет ничего особенного по запросу.Просто создайте узел динамически и добавьте его на свою страницу:

function require(src)
{
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = src;
    document.body.appendChild(script);
}

Вышеуказанная функция загрузит скрипт с URL-адреса, указанного параметром src.

Обратный вызов - это другая история.Вы не получите событие после загрузки скрипта.Если вы хотите получать уведомления о загрузке скрипта, вам необходимо уведомить о загруженном скрипте из самого скрипта .Например, вы можете вызывать предопределенную функцию на своей странице как последний оператор в загружаемом файле JavaScript.После вызова этой функции вы знаете, что скрипт завершил загрузку.Однако для этого необходимо иметь возможность изменять загруженный файл сценария.

Аналогичный подход для уведомления загруженного сценария используется с JSONP .Данные JSONP извлекаются с использованием того же подхода, что и выше - вы добавляете динамически созданный узел скрипта на страницу.Однако по умолчанию возврат данных с сервера не приводит к изменению состояния.Вызов функции необходим, чтобы указать, что что-то произошло (например, данные поступили).В JSONP вы указываете имя функции в URL-адресе запроса JSONP.Затем сервер возвращает фрагмент javascript, в котором вызывается указанная вами функция, передавая данные JSON в аргументе.

Все это говорит о том, что вам нужно иметь возможность вызывать функцию на странице после того, как скриптзагружен.

...