Полимерный элемент с зависимостями javascript
Я создал полимерный элемент для рендеринга markdown который использует отмечены.библиотека js. Мне было интересно, каков рекомендуемый способ загрузки в его зависимости?
должен ли я просто использовать тег сценария?
<script src="../marked/lib/marked.js"></script>
или было бы лучше поместить все мои зависимости в импорт html и ссылку на этот файл. В этом случае у меня только одна зависимость, но я мог бы легко иметь больше.
<!-- in scripts.html -->
<script src="../marked/lib/marked.js"></script>
<script src="../foo/foo.js"></script>
<script src="../bar/bar.js"></script>
<!-- in mark-down.html -->
<link rel="import" href="scripts.html">
примечание: эти пути предполагают мои элемент (и его зависимости) устанавливаются с bower, поэтому все они должны быть братьями и сестрами в bower_components.
1 ответ:
частные ресурсы должны быть установлены в папке компонента и использоваться непосредственно. Но shared ресурсы, те ресурсы, которые другие компоненты my также хотят использовать (например
marked), следует рассматривать как зависимости.мы предлагаем два способа для обработки общих зависимостей:
- всегда используйте канонический путь что это
../<package-name>(вы уже это сделали). Полимер по соглашению ожидает папку с плоской зависимостью (как поддерживается Bower), поэтому любой ресурс, который вам нужен, всегда должен быть на этом пути.- относятся к импорт для общего ресурса.
в этом случае
<script src="../marked/lib/marked.js">соответствует первой конвенции. Ваш компонент может зависеть от
markedпакет и ожидать, что он будет существовать в../.вторая конвенция поддерживает совместное использование. Если более чем один компонент в проекте используется
scriptтег для загрузки библиотеки, библиотека будет загружаться несколько раз. Импорт, с другой стороны, де-дублируются, так что у вас нет этой проблемы.например, если все компоненты нагрузки
markedстандартным способом:
<link rel="import" href="../marked-import/marked-import.html">тогда у вас будет только одна копия загруженного скрипта.
кроме того, импорт позволяет опосредовать фактический ресурс. Например, обычно
marked-importзависит отmarkedи использоватьscriptтег для загрузки JavaScript. Но фактически, любой конкретный автор проекта может изменить локальныйmarked-import.htmlчтобы загрузить основной код из CDN или из любого другого места. Путем косвенного доступа через импорт мы создаем единую точку управления.сегодня,
markedи другие библиотеки не включают файлы импорта, поэтому мы должны заполнить эти пробелы. Кроме того, это потребует координации с другими компонентами (чтобы иметь соглашение о том, какое стандартное имя импорта будет для любого конкретного общего ресурса). Как (и если) эти конвенции будут приняты, такие вопросы будут уменьшаться с течением времени.Итак, ваш установленный компонент будет выглядеть примерно так:
/components /mark-down - depends on marked-import /marked-import - (controlled by user, can just depend on `../marked`) /marked