ZI'm создайте приложение, в котором на основе пользовательских настроек/конфигурации я загружу различные модули на страницу.динамическое добавление тегов сценариев в угловое приложение
Для этого, когда страница загружается, я запускаю скрипт, который строит список тегов скриптов и добавляет все теги в тело страницы. Я также создаю список инжекторов зависимостей и включаю зависимости, когда приложение загружается.
Я задерживая приложения нагрузки, используя поставив
window.name = "NG_DEFER_BOOTSTRAP!";
, а затем после добавления тегов сценария, я бегу
angular.element(document).ready(function() { setTimeout(function(){ angular.resumeBootstrap(); },1000); });
У меня есть две проблемы. Прежде всего, по какой-то причине, если я включаю angular.js в файл конфигурации, я получаю ошибки, ссылающиеся на угловые, которые не найдены.
Я вижу, что угловой загружается в браузер, но я предполагаю, что это проблема времени, так как углы занимают больше времени, чем многие другие файлы.
Я собирался просто поместить углы в обычный тег скрипта, но затем я обнаружил, что для одного из модулей, которые я загружаю, требуются jQuery и jQuery UI, которые должны быть загружены до углового, что означает, что больше файлов загружается как скрипты и, возможно, не нужны для этого пользователя.
Я посмотрел на использование require.js и передавая конфигурации Params в
requirejs.config.paths = //the custom built list from the users configuration file
Но, от того, что я понимаю, что также означает, что я должен был бы обернуть все мои модули в
requirejs(['jquery', 'angular', 'otherModule'], function ($, angular, otherModule) { // my module stuff here });
Любые другие предложения о том, как это сделать? Есть ли лучше AMD, чем require.js? Я бы опубликовал весь свой код здесь, но я не думаю, что это помогло бы, поскольку проблема исходит из браузера, загружающего файлы после того, как документ будет готов.
Спасибо Андрей, Вы можете объяснить, что вы имеете в виду о запуске на domReady? Угловое уже делает это для меня (насколько я знаю). У меня есть несколько причин держаться подальше от require.js. Один из них заключается в том, что для использования внешних модулей это означает, что мне нужно также обернуть эти модули в requirejs, а когда они будут обновлены, это означает, что мне нужно вернуться и снова обновить их. С написанным мной сценарием я просто включаю модуль в свой скрипт config, и все включается правильно, за исключением угловых и jQuery, которые нужно загружать напрямую. – pedalpete
@pedalpete Я имею в виду, что плагин domReady позволяет запустить bind requirejs callback для события domReady без использования angularjs или jquery.Как я понял из вашего вопроса, ваши скриптовые теги могут отличаться для разных пользователей, и ситуация, когда нет jquery или angularjs, возможно. –