
Sprog 🇩🇰 Dansk
Baggrund
API
Skrivning af udvidelser
Udvikling af udvidelser
Kontekst
FastComments giver mulighed for at udvide vores kernefunktionalitet via scripts, som vi kalder Extensions.
En Extension kan tilføje yderligere markup til kommentarboksen, registrere hændelseslyttere og køre vilkårlig kode.
Her finder du eksempler på udvidelser, vi har i produktion, samt dokumentation om, hvordan man skriver udvidelser.
Udvidelsens livscyklus 
Scriptet for hver udvidelse hentes og køres, før kommentarboksen begynder at hente det første sæt kommentarer og gengive brugergrænsefladen.
Ved første indlæsning vil følgende data blive tilknyttet udvidelsesobjektet:
config- En reference tilconfig-objektet.translations- En reference tiltranslations-objektet.commentsById- En reference til alle kommentarer efter id.root- En reference til rod-DOM-noden.
Udvidelser bør overskrive de ønskede funktioner, som kommentarboksen vil kalde på de relevante tidspunkter.
Definition af en udvidelse 
Den mindst mulige udvidelse ville være:
Run 
I dette eksempel kan du gemme dette som my-extension.js og gøre det tilgængeligt på https://example.com/my-extension.min.js.
Denne udvidelse gør ikke noget, bortset fra at den ved indlæsning henter det udvidelsesobjekt, der er oprettet af kerne-kommentarbiblioteket.
Dette Extension-objekt er en singleton og deles ikke med andre udvidelser.
Dernæst, for at indlæse vores udvidelse, skal vi fortælle kommentar-widgetten om den. For eksempel:
Run 
For funktionelle eksempler, se næste afsnit.
Eksempler på udvidelser 
Hos FastComments skriver vi vores egne udvidelser ved hjælp af det samme API. Du kan se den uminificerede kode for disse udvidelser på følgende endpoints:
Dark Mode
Dark Mode-udvidelsen indlæses betinget, når en "dark" side detekteres. Denne udvidelse tilføjer blot noget CSS til kommentar-widgetten. På den måde behøver vi ikke indlæse dark mode CSS, når det ikke er nødvendigt.
https://fastcomments.com/js/comment-ui/extensions/comment-ui.dark.extension.js
Moderation
Når den aktuelle bruger er en moderator, bruger vi moderationsudvidelsen.
Dette er et godt eksempel på at tilføje klikbaserede event listeners, lave API-anmodninger samt tilføje til kommentarmenuen og kommentarområder.
https://fastcomments.com/js/comment-ui/extensions/comment-ui.moderation.extension.js
Live Chat
Live Chat-udvidelsen (i kombination med anden konfiguration og styling) omdanner kommentar-widgetten til en live chat komponent.
https://fastcomments.com/js/comment-ui/extensions/live-chat.extension.js
Udvidelsesobjektet 
Udvidelsesobjektet består af følgende definition:
Run 
Udvidelses-API 
Interaktion med Extension er enkel, da vi blot definerer referencer til de funktioner, vi ønsker kaldt.
For at bygge videre på det tidligere eksempel, lad os sige, at vi vil tilføje HTML til toppen af hver kommentar:
Run 
Når du returnerer HTML som denne, vil den blive flettet ind i UI'en via en dom-diffing-algoritme.
Manuelt udløse re-rendering af en kommentar
Vi kan vente på den indledende sideindlæsning og manuelt re-rendere en kommentar ved at kalde reRenderComment:
Run 