Полимерный элемент с зависимостями 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