Partage de composants polymères Partie 1

Dans mon dernier tutoriel sur la bibliothèque Polymer, j'ai expliqué comment tirer parti de ce nouvel outil génial pour créer des composants Web réutilisables. L’essentiel du tutoriel et de l’utilisation des composants est d’aider notre développement en:

  • Encapsuler une grande partie du code complexe et de la structure
  • Permettre aux développeurs d'utiliser une convention de dénomination de styles de balises simple à utiliser
  • Fournir une suite d’éléments d’interface utilisateur prédéfinis à exploiter et à étendre

Je suis toujours épris de cela et je voulais l'explorer un peu plus en consultant un nouveau modèle publié par l'équipe Polymer pour faciliter considérablement le déploiement et la réutilisation..

Le chemin canonique

Une des bizarreries du processus de développement des polymères, que je n’ai pas abordée, c’est le décalage entre le développement d’un composant et sa mise à la disposition des autres utilisateurs. Jetons un coup d'oeil à un extrait de mon précédent tutoriel:

L'objectif de ce code est d'inclure Polymer Core, la principale API qui vous permet de définir les éléments personnalisés. Pour le développement et les tests locaux, cela fonctionne parfaitement, mais malheureusement, le chemin spécifié vous empêchera de partager ce composant. La raison en est que si un autre utilisateur tente d’installer votre élément avec Bower (la méthode d’installation préférée), il deviendra un frère de Polymer dans leur répertoire. bower_components dossier. 

Le problème avec ça, c’est que le composant va chercher … /Bower_components/polymer/polymer.html qui sera un chemin invalide. Les composants doivent toujours supposer que leurs dépendances sont des frères et sœurs, ils doivent donc rechercher … /Polymer/polymer.html. C'est le "chemin canonique".

En discutant avec l’impressionnant Rob Dodson de l’équipe Polymer, il a expliqué que le seul moyen de contourner le problème était de développer à l’aide de la méthode que j’avais décrite à l’origine et que, une fois prêt à partager mon composant, convertissez tous les chemins que bower_components vers … / quand je suis prêt à publier mon élément.

Ce n’est évidemment pas idéal et j’aurais probablement pu créer un type de tâche Grunt pour analyser mes fichiers de composants afin d’effectuer ces mises à jour. Heureusement, l’équipe Polymer a fait des découvertes et a mis au point une solution créative qu’elle appelle le élément sans titre.

le élément sans titre Modèle

Quand je mentionne élément sans titre, Je parle d'une nouvelle chaudière disponible pour faciliter considérablement la création de composants réutilisables et déployables, en vous fournissant une base de travail sur laquelle vous pouvez travailler. Cela aide à éliminer les problèmes que j'ai mentionnés ci-dessus en:

  • Fournir des conseils sur la structure de répertoire appropriée
  • Incorporer un composant supplémentaire servant à documenter votre API
  • Vous permettant de facilement faire la démonstration de votre composant au cours du développement et lors du partage

La grande victoire pour cela est de pouvoir développer votre composant sans avoir à vous soucier de faire des changements de chemin substantiels qui ne sont pas seulement encombrants, mais pourraient casser votre élément si vous manquez quelque chose.

Actuellement, le projet fait partie de PolymerLabs au moment où il est mis à l'épreuve, mais il a certainement l'air assez solide:

Maintenant, la première chose à faire est de créer un répertoire de développement contenant votre nouveau composant, ainsi que tous les composants Bower que vous installerez. J'ai appelé le mien polymèredev. De là, vous devrez vous rendre au élément sans titre Github repo et téléchargez-le dans votre nouveau dossier de développement. C’est une étape importante parce que vous avoir besoin pour extraire le contenu dans ce dossier, pour éviter les problèmes de répertoire frères que j'ai mentionnés précédemment.

Extraire le .Zip *: français fichier va créer un nouveau dossier appelé untitled-element-master qui contient les fichiers passe-partout dont vous aurez besoin pour créer votre nouveau composant. Vous devrez renommer plusieurs éléments en fonction du nom de votre composant. Ceci comprend:

  • le untitled-element-master dossier
  • untitled-element.html
  • untitled-element.css

Je vais recréer l'élément Reddit que j'ai créé dans mon dernier tutoriel, voici donc comment se présenteraient les changements:

  • untitled-element-master -> reddit-element
  • untitled-element.html -> reddit-element.html
  • untitled-element.css -> reddit-element.css

Voici à quoi ressemblait le répertoire auparavant:

Et voici à quoi cela ressemble après les mises à jour:

L’essentiel pour comprendre, c’est que vous travaillerez à l’intérieur du reddit-element lors de la création de votre composant et ultérieurement, lorsque nous utilisons Bower pour installer les composants Polymer, ce répertoire est un frère direct des répertoires nouvellement installés. Je sais que je suis vraiment dur sur ce point mais c'est une chose importante à comprendre, car cela affecte votre capacité à partager votre composant.

Pour finir, vous souhaiterez mettre à jour les références avec le nom de votre composant, à l’intérieur des fichiers suivants:

  • bower.json
  • demo.html
  • reddit-element.html

Chacun de ces fichiers contient des références à élément sans titre dans le code et doivent être mis à jour. Rappelez-vous que toute référence à élément sans titre devrait être changé en reddit-element. Si vous voulez être absolument sûr, effectuez une recherche et un remplacement globaux à l'aide de votre éditeur..

Mise en place pour Bower

Puisque Bower est la méthode préférée pour installer Polymer et partager des composants, passons en quelques étapes pour nous assurer de configurer correctement la configuration de Bower du composant Reddit..

Par défaut, le standard inclut un bower.json fichier. Ce fichier est utilisé pour répertorier plusieurs éléments, notamment le nom du composant et les éventuelles dépendances à installer pour l'utiliser. Voici à quoi ça ressemble:

"name": "reddit-element", "private": true, "dépendances": "polymer": "Polymer / polymer # master" 

Je vais d'abord enlever le privé propriété, car cela empêchera le composant d’être répertorié dans le registre Bower. Puisqu'il est supposé être partageable, je veux qu'il soit répertorié. De plus, le composant Reddit doit faire un appel Ajax, donc j'inclus une dépendance sur Polymer éléments de base ensemble de composants qui inclut la fonctionnalité Ajax dont j'ai besoin. Enfin, je vais ajouter un numéro de version pour suivre cette évolution. Voici le résultat final:

"name": "reddit-element", "version": "0.0.1", "dépendances": "polymère": "Polymère / polymère # ~ 0.2.3", "éléments centraux": "Polymère / éléments de base # ~ 0.2.3 ",

La dernière étape de la configuration de Bower consiste à créer un fichier appelé .Bowerrc dans le reddit-element dossier qui définit un emplacement d'installation personnalisé pour les dépendances de notre composant. Ceci est défini comme de simples données JSON comme ceci:

"répertoire": "… /"

En gros, cela indique à Bower d’installer les dépendances d’un niveau supérieur pour qu’elles soient les frères et soeurs de la même famille. reddit-element dossier. C’est important parce que lorsque quelqu'un installe notre composant avec Bower, il sera placé dans le bower_components dossier en tant que frères et sœurs à tout le reste là-bas (y compris Polymer). En structurant les choses de cette manière, nous nous assurons que notre développement se fait de la même manière que nous le partagerons éventuellement. Cela nous permet également d'utiliser le chemin canonique que j'ai mentionné ci-dessus, garantissant ainsi une manière cohérente de référencer d'autres composants de notre code..

Passons en revue les différences. Si je n'ai pas créé le .Bowerrc déposer et exécuter le bower installer commande, ma structure de répertoire ressemblerait à ceci:

Cela installe le bower_components dossier directement dans le répertoire du composant, ce qui n'est pas ce que je veux. je veux le reddit-element dossier pour être un frère de toutes les dépendances dont il a besoin:

Cette méthode garantit que lorsqu'un utilisateur installe ce composant à l'aide de Bower, le composant et les dépendances seront correctement installés dans le bower_components dossier.

Avec le .Bowerrc fichier ajouté au dossier de votre composant et le bower.json configuration avec les dépendances appropriées, la prochaine étape consiste à exécuter bower installer, faire en sorte que Bower détache les composants appropriés et les ajoute au projet.

À suivre

Dans ce tutoriel, je souhaitais m'assurer que j'avais jeté les bases solides sur l'utilisation du nouveau passe-partout Polymer et la logique qui sous-tendait les choix de conception effectués par l'équipe..

Dans la partie suivante de cette série, je passerai en revue le nouveau composant de documentation inclus dans le standard et expliquera comment cela facilitera considérablement le partage et la démonstration de votre composant. Je vais également vous montrer comment configurer votre composant pour qu'il soit partagé via le registre Bower..