> For the complete documentation index, see [llms.txt](https://doc.commandersact.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://doc.commandersact.com/fr/fonctionnalites/sources/sources-catalog/web/containers/setup-guides-for-developers/spa-implementation-guide.md).

# Guide d'implémentation SPA

### 1. W**hat est un environnement SPA**? <a href="#id-1.-what-is-an-spa-environment" id="id-1.-what-is-an-spa-environment"></a>

Un SPA (Single Page Application) est un site web ou une application web qui charge des éléments dynamiquement en fonction des actions de l’utilisateur plutôt que de charger de nouvelles pages après chaque interaction. Le conteneur web Commanders Act offre des fonctions vous permettant de charger tout ou partie du conteneur dans un environnement SPA, afin d’appeler les tags souhaités à chaque action effectuée par un utilisateur. Ces fonctions doivent être implémentées dans le code source de votre site soit par votre partenaire technique soit par votre propre équipe technique.

### 2.**Comment implémenter le conteneur web Commanders Act dans un environnement SPA**? <a href="#id-2.how-to-implement-tagcommander-in-an-spa-environment" id="id-2.how-to-implement-tagcommander-in-an-spa-environment"></a>

#### 2.1 Chargement des conteneurs <a href="#id-2.1-loading-containers" id="id-2.1-loading-containers"></a>

Les conteneurs web Commanders Act sont chargés une seule fois au chargement de la page dans un environnement Single Page Application. Afin de recharger les conteneurs lors des actions utilisateur, vous pouvez utiliser les fonctionnalités suivantes :

* tC.container.reload() : cette fonction vous permet de recharger tous les conteneurs d’une page. Les éléments partagés par les conteneurs (calcul de déduplication, initialisation des variables externes, calcul des variables internes, calcul des cookies déposés avec data storage et initialisation du cookie Privacy) ne sont chargés qu’une seule fois afin d’optimiser les performances.

```
tC.container.reload({ exclusions: ["datastorage","deduplication","internalvars","privacy"], events: {label1: [{targeted_element},{event_variables}], label2: [{},{}]}})
```

Cette fonction permet de recharger tous les conteneurs d’une page tout en excluant certains de leurs éléments. Les éléments à exclure doivent être mentionnés dans le tableau « exclusions ».\
\
Ex : si vous souhaitez recharger le conteneur sans recalculer les variables internes, vous devez appeler cette fonction : tC.container.reload({exclusions:\["internalvars"]})\
\
Cette fonction permet également d’appeler la fonction tC.event qui charge les tags sélectionnés lors de l’action de l’utilisateur. La fonction tC.event est exécutée après le rechargement des éléments du conteneur. label : spécifiez le nom que vous souhaitez donner à votre fonction (ex : "click", "add\_to\_cart"…). targeted\_element : éléments DOM sur lesquels l’événement s’applique. {} si nécessaire.\
\
event\_variables : variables spécifiques à l’événement. {} si nécessaire. Ex :

`tC.container.reload({events: {label1: [{target: document.getElementById('targeted_element'}, {"page_name":"", "product_id":""}]}})`

* tC.container\_IDS\_IDC.reload() : cette fonction permet de charger un conteneur unique (pour ce faire, vous devrez spécifier l’ID du site et l’ID du conteneur) sur une page qui en contient plusieurs.

IDS : ID du site Commanders Act\
IDC : ID du conteneur Commanders Act

* `tC.container_IDS_IDC.reload({ exclusions: ["datastorage","deduplication","internalvars","privacy"], events: {label1: [{targeted_element},{event_variables}], label2: [{},{}]} })`

Cette fonction permet de charger un conteneur unique (pour ce faire, vous devrez préciser l’ID du site et l’ID du conteneur) sur une page qui en contient plusieurs tout en excluant certains de leurs éléments. Les éléments à exclure doivent être mentionnés dans le tableau « exclusions », et les fonctions d’événements doivent être mentionnées dans l’objet « events », comme pour la `tC.container.reload({exclusions:["datastorage","deduplication","internalvars","privacy"]})` fonction.

#### 2.2 Chargement des tags <a href="#id-2.2-loading-tags" id="id-2.2-loading-tags"></a>

Pour charger les tags sélectionnés lors de l’action de l’utilisateur, vous devrez implémenter cette fonction :

* `tC.event.label()` : cette fonction permet de charger les tags sélectionnés lors de l’action de l’utilisateur.

label : spécifiez le nom que vous souhaitez donner à votre fonction.\
\
Ex : implémentez la fonction tC.event.step2\_basket si vous souhaitez appeler des tags spécifiques à la 2e étape du panier d’achat.\
\
Vous pouvez également configurer une fonction « générique » comme tC.event.all sur toutes vos pages virtuelles afin d’appeler des tags sur tous vos sites SPA (tags Analytics, par exemple). Vous utiliserez ensuite les périmètres et contraintes de l’interface Commanders Act pour contrôler l’exécution des autres tags.

* `tC.event.label(this, {"page_name":"", "product_id":""})` : cette fonction permet de charger les tags sélectionnés en fonction de l’action de l’utilisateur et de définir des variables spécifiques à ladite action (ex : le nom d’une page virtuelle, un ID de produit spécifique …).

#### 2.3 Aller plus loin : Structure d’un web Ccontainer Commanders Act <a href="#id-2.3-going-further-structure-of-a-tagcommander-container" id="id-2.3-going-further-structure-of-a-tagcommander-container"></a>

Vous trouverez ci-dessous la liste de tous les éléments qui se chargent dans le conteneur web Commanders Act lors du premier chargement, ainsi que les fonctions tC.container.reload,(tC.container\_IDS\_IDC.reload()) et tC.event.XXX() appelées.

| Élément du conteneur                                                                     | Définition                                                                                                                                                   | 1er chargement du conteneur | fonction tC.container.rel oad() | fonction tC.container\_IDS\_IDC.reload() | fonction tC.event.XXX() |
| ---------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------- | ------------------------------- | ---------------------------------------- | ----------------------- |
| Fonctions de déduplication                                                               | Elles identifient la source de trafic du visiteur                                                                                                            | oui                         | Oui (une fois chargé)           | oui                                      | non                     |
| Initialisation des variables externes                                                    | Elles définissent toutes les variables externes qui n’existent pas déjà                                                                                      | oui                         | oui                             | oui                                      | non                     |
| JavaScript dynamique 1                                                                   | Appelle un fichier JavaScript externe avant la déclaration des variables internes                                                                            | oui                         | non                             | non                                      | non                     |
| JavaScript statique 1                                                                    | Appelle du code JavaScript personnalisé avant la déclaration des variables internes                                                                          | oui                         | non                             | non                                      | non                     |
| Variables internes                                                                       | Calcule les variables internes                                                                                                                               | oui                         | oui                             | oui                                      | non                     |
| JavaScript dynamique 2                                                                   | Appelle un fichier JavaScript externe après la déclaration des variables externes                                                                            | oui                         | non                             | non                                      | non                     |
| JavaScript statique 2                                                                    | Appelle un fichier JavaScript externe après la déclaration des variables internes                                                                            | oui                         | non                             | non                                      | non                     |
| stockage de données                                                                      | Calcule la valeur des cookies créés avec le module "data storage"                                                                                            | oui                         | oui                             | oui                                      | non                     |
| "Container loaded" & "DOM ready" & "Clicks"& "Form submission " & "Scroll" tags + règles | Exécute les tags appelés sur les déclencheurs "Container loaded", "DOMready", "Clicks", "Form submission" et "Scroll", ainsi que sur les règles associées au | oui                         | non                             | non                                      | non                     |
| ​                                                                                        | premier chargement du conteneur.                                                                                                                             | ​                           | ​                               | ​                                        | ​                       |
| tags "Custom" + règles                                                                   | Exécute les tags appelés sur les déclencheurs "Custom", ainsi que sur les règles associées au chargement ou au rechargement du conteneur.                    | oui                         | oui                             | oui                                      | oui                     |
| Événements + règles                                                                      | Exécute les événements déclenchés par la fonction tc\_events précédente                                                                                      | oui                         | non                             | non                                      | non                     |
| Privacy                                                                                  | Réinitialise le cookie Privacy afin de prendre en compte les choix des utilisateurs.                                                                         | oui                         | oui                             | oui                                      | Non                     |
| Hiérarchie des tags                                                                      | Identifie les tags piggybackés (tags chargés latéralement par d’autres tags dans le module "TagPerformanc e")                                                | oui                         | non                             | non                                      | non                     |
| Écouteur d’événements                                                                    | Recharge les écouteurs d’événements (qui permettent de suivre les actions effectuées par tout utilisateur naviguant sur le site (clics, défilements …))      | oui                         | non                             | non                                      | non                     |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://doc.commandersact.com/fr/fonctionnalites/sources/sources-catalog/web/containers/setup-guides-for-developers/spa-implementation-guide.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
