
Série SPFx : Un regard plus approfondi sur des extraits de code importants
Un regard plus approfondi sur des extraits de code importants
La principale différence entre un WebPart SPFx et une extension est qu’un WebPart est un composant qui permet de visualiser ou de modifier le contenu d’une page, tandis qu’une extension personnalise ou étend l’interface utilisateur de SharePoint ou Microsoft Teams.
Un WebPart SPFx est un composant créé sur mesure qui peut être ajouté à une page SharePoint pour fournir des fonctionnalités supplémentaires. Par exemple, il peut être utilisé pour afficher un graphique, un calendrier ou une liste d’éléments. Les WebParts sont généralement utilisés pour modifier ou étendre le contenu de la page.
Une extension SPFx, en revanche, est un morceau de code créé sur mesure qui s’exécute dans le contexte de SharePoint ou Microsoft Teams et peut être utilisé pour personnaliser ou étendre l’interface utilisateur de SharePoint ou Teams. Par exemple, elle peut être utilisée pour ajouter une commande personnalisée aux barres de commandes, ajouter un en-tête ou un pied de page personnalisé, ou personnaliser les couleurs de l’interface utilisateur. Les extensions sont utilisées pour personnaliser l’interface utilisateur de SharePoint ou Teams et étendre les fonctionnalités.
Il existe trois types d’extensions SPFx :
La mise en œuvre d’une extension implique un XML, un clientSideInstance.xml ou un elements.xml. Vous pouvez trouver ce XML dans le dossier SharePoint/assets de votre solution dans Visual Studio Code. Ces fichiers xml sont inclus dans la fonctionnalité de votre solution (voir les fonctionnalités dans le fichier package-solution.json).

La différence entre les 2 fichiers xml réside dans le fait que le clientSideInstance.xml est utilisé pour déployer votre extension à l’échelle du tenant. Cela se fait lorsque votre application est déployée dans le catalogue d’applications. Si un fichier clientSideInstance.xml est trouvé lors du déploiement de votre application, votre extension sera implémentée dans la liste cachée Tenant Wide Extensions. Cela signifie que chaque fois que votre extension est chargée quelque part dans SharePoint, la configuration de cette extension est lue depuis cette liste Tenant Wide Extensions.
Si nous examinons les différentes propriétés dans un tel xml d’un clientSideInstance, nous pouvons distinguer les suivantes :
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<ClientSideComponentInstance
Title="ListItemDetailsDialog"
Location="ClientSideExtension.ListViewCommandSet.CommandBar"
ListTemplateId="100"
Properties="{"sampleTextOne":"One item is selected in the list.", "sampleTextTwo":"This command is always visible."}"
ComponentId="acddd824-662e-47a5-a80e-6586b25c810a"
/>
</Elements>
Lorsqu’un elements.xml est trouvé, ce xml sera utilisé lors de l’implémentation au niveau de la collection de sites. Avec cette implémentation, votre extension ne sera configurée qu’au niveau de la collection de sites. Si nous examinons le xml du fichier elements.xml, nous pouvons distinguer les propriétés suivantes :
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<CustomAction
Title="ListItemDetailsDialog"
RegistrationId="100"
RegistrationType="List"
Location="ClientSideExtension.ListViewCommandSet.CommandBar"
ClientSideComponentId="acddd824-662e-47a5-a80e-6586b25c810a"
ClientSideComponentProperties="{"sampleTextOne":"One item is selected in the list.", "sampleTextTwo":"This command is always visible."}">
/>
</Elements>
Ces 2 fichiers sont intégrés dans votre application, mais quand est-il décidé quel xml utiliser ? Cela se produit lorsque votre application est déployée dans le catalogue d’applications. Lorsque nous allons procéder au déploiement, nous voyons apparaître l’écran suivant :

Si vous cochez « Rendre cette solution disponible pour tous les sites de l’organisation », le fichier clientSideInstance.xml sera utilisé et l’extension sera implémentée dans la liste Tenant Wide Extensions. Si vous ne cochez pas cette option, le fichier elements.xml sera utilisé lorsque vous ajouterez spécifiquement une application à une collection de sites.