2016-10-10 5 views
1

Я работаю над панелью администратора, построенной поверх шаблона AdminLTE. Шаблон зависит от jquery, bootstrap и некоторых других настраиваемых плагинов, которые должны быть предварительно включены с использованием тегов сценариев в документе.Как настроить SystemJS на знание уже загруженной библиотеки, например jquery?

Я использую Jspm для управления библиотеками, некоторые библиотеки, такие как Toastr, будут нуждаться в jQuery в качестве зависимости и будут устанавливать и загружать другую копию jQuery.

Я пытаюсь выяснить, как настроить SystemJS для того, чтобы: а) Сообщить SystemJS, что мне не нужно установить еще одну копию JQuery и б) во избежание дублирования загрузки JQuery, так как это глобальная зависимость который был ранее загружен. Как достичь этого?

<script src="jquery.min.js"></script> 
<script src="bootstrap.min.js"></script> 
... 
<script src="system.js"></script> 
<script> 
    System.config({ 
     "map": { 
      "jquery": window.jQuery //??? 
     } 
}); 
</script> 
<script> 
    System.import('main'). 
</script> 

ответ

1

Похоже, вы хотите использовать System.set

System.set('jQuery', System.newModule({'default': window.jQuery })); 

Это предполагает, что глобальный, как ожидается, будет 'по умолчанию'. Вы также можете указать другой экспорт, передав больше ключей/значений до System.newModule.

Если вы можете, то лучше было бы импортировать глобал как другие сценарии, потому что Глобал могут иметь зависимости и systemjs может управлять порядком загрузки для вас через meta config setup

+0

Вы должны добавить ', __useDefault: true' тоже для это работать. Я тоже боролся с этим и нашел это, посмотрев исходный код на то, как SystemJS сам использует 'newModule'. Добавление этой опции, наконец, решило проблему. Я попробовал это для самой SystemJS, чтобы зарегистрировать его для имени модуля '' systemjs'', так как он уже загружен, и он работал только после того, как я добавил эту опцию. –