J'ai créé n élément Polymer pour le rendu de Markdown qui utilise la bibliothèque marquée.js. Je me demandais, quelle est la méthode recommandée pour charger dans ses dépendances?
Dois-je simplement utiliser une balise de script?
<script src="../marked/lib/marked.js"></script>
Ou serait-il préférable de mettre toutes mes dépendances dans une importation html et de créer un lien vers ce fichier. Dans ce cas, je n'ai qu'une seule dépendance mais je pourrais facilement en avoir plus.
<!-- 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">
Remarque: Ces chemins supposent que mon élément (et ses dépendances) sont installés avec bower donc ils devraient tous être frères et sœurs dans bower_components
.
Les ressources privées doivent être installées dans votre dossier de composants et utilisées directement. Mais les ressources partagées, ces ressources que d'autres composants peuvent également utiliser (comme marked
), doivent être traitées comme des dépendances.
Nous suggérons deux conventions pour gérer les dépendances partagées:
../<package-name>
(vous l'avez déjà fait). Polymer par convention attend un dossier de dépendance plate (tel que pris en charge par Bower), donc toute ressource dont vous avez besoin doit toujours être sur ce chemin.Dans ce cas,
<script src="../marked/lib/marked.js">
rencontre la première convention. Votre composant peut dépendre du package marked
et s'attendre à ce qu'il existe à ../
.
La deuxième convention prend en charge le partage. Si plusieurs composants d'un projet utilisent une balise script
pour charger une bibliothèque, la bibliothèque se chargera plusieurs fois. Les importations, en revanche, sont dédoublonnées, vous n'avez donc pas ce problème.
Par exemple, si tous les composants chargent marked
de la manière standard:
<link rel="import" href="../marked-import/marked-import.html">
vous n'aurez alors qu'une seule copie du script chargée.
De plus, les importations vous permettent d'indirecter la ressource réelle. Par exemple, normalement marked-import
Dépend de marked
et utilise une balise script
pour charger le JavaScript. Mais en fait, tout auteur de projet particulier peut modifier le marked-import.html
Local pour charger le code principal à partir d'un CDN ou de tout autre emplacement. En indirectant tous les accès via l'importation, nous créons un point de contrôle unique.
Aujourd'hui, marked
et d'autres bibliothèques n'incluent pas de fichiers d'importation, nous devons donc combler ces lacunes. En outre, cela nécessitera une coordination avec d'autres composants (pour avoir un accord sur le nom d'importation standard pour une ressource partagée particulière). À mesure que (et si) ces conventions sont adoptées, ces questions diminueront avec le temps.
Ainsi, votre composant installé ressemblerait à ceci:
/components
/mark-down - depends on marked-import
/marked-import - (controlled by user, can just depend on `../marked`)
/marked