Ontwikkelen AEM componenten developing-aem-components

AEM componenten worden gebruikt om de inhoud die op uw webpagina's beschikbaar is, vast te houden, op te maken en weer te geven.

  • Wanneer auteurspagina's, de componenten de auteurs toestaan om de inhoud uit te geven en te vormen.

    • Wanneer het construeren van a Commerceplaats kunnen de componenten, bijvoorbeeld, informatie van de catalogus verzamelen en teruggeven.
      Zie Ontwikkelend eCommercevoor meer informatie.

    • Wanneer het construeren van de plaats van a Gemeenschappenkunnen de componenten informatie aan verstrekken en informatie van uw bezoekers verzamelen.
      Zie het Ontwikkelen van Gemeenschappenvoor meer informatie.

  • In de publicatie-instantie renderen de componenten uw inhoud en presenteren deze zoals u nodig hebt aan uw websitebezoekers.

NOTE
Deze pagina is een voortzetting van het document AEM Componenten - de Grondbeginselen.
CAUTION
Onderstaande componenten /libs/cq/gui/components/authoring/dialog zijn alleen bestemd voor gebruik in de Editor (dialoogvensters met componenten in Authoring). Als ze elders worden gebruikt (bijvoorbeeld in een wizard), gedragen ze zich mogelijk niet naar behoren.

Codevoorbeelden code-samples

Deze pagina bevat de referentiedocumentatie (of koppelingen naar referentiedocumentatie) die vereist is voor het ontwikkelen van nieuwe componenten voor AEM. Zie het Ontwikkelen AEM Componenten - de Steekproeven van de Codevoor sommige praktische voorbeelden.

Structuur structure

De basisstructuur van een component is behandeld op de pagina Componenten AEM - de Grondbeginselen. In dat document worden zowel de aanraakinterface als de klassieke gebruikersinterface behandeld. Zelfs als u niet de klassieke montages in uw nieuwe component te hoeven gebruiken kan het helpen om zich van hen bewust te zijn wanneer het erven van bestaande componenten.

Bestaande componenten en dialoogvensters uitbreiden extending-existing-components-and-dialogs

Afhankelijk van de component u wilt uitvoeren, zou het mogelijk kunnen zijn om een bestaande instantie uit te breiden of aan te passen, eerder dan het bepalen van en het ontwikkelen van de volledige structuurvan kras.

Wanneer u een bestaande component of een bestaand dialoogvenster uitbreidt of aanpast, kunt u de volledige structuur of de structuur die voor het dialoogvenster is vereist, kopiëren of repliceren voordat u de wijzigingen aanbrengt.

Een bestaande component uitbreiden extending-an-existing-component

Het uitbreiden van een bestaande component kan met Hiërarchie van het Type van Middelen de verwante overervingsmechanismen worden bereikt.

NOTE
Componenten kunnen ook opnieuw worden gedefinieerd met een bedekking op basis van de logica van het zoekpad. Nochtans, in zulk geval, wordt de Verschuivende Fusie van het Middelniet teweeggebracht en /apps moet de volledige bekleding bepalen.
NOTE
De component van het inhoudsfragmentkan ook worden aangepast en worden uitgebreid, hoewel de volledige structuur en de verhoudingen met Assets moeten worden overwogen.

Dialoogvenster Bestaande componenten aanpassen customizing-a-existing-component-dialog

Het is ook mogelijk om de de componentendialoog van a met voeten te treden gebruikend de Verschuivende Fusie van het Middelen het bepalen van het bezit sling:resourceSuperType.

Dit betekent dat u alleen de vereiste verschillen opnieuw hoeft te definiëren in plaats van het volledige dialoogvenster opnieuw te definiëren (met sling:resourceSuperType). Deze methode wordt nu aanbevolen voor het uitbreiden van een componentdialoogvenster

Zie de Verschuivende Fusie van het Middelvoor meer details.

Opmaak definiëren defining-the-markup

Uw component zal met HTMLworden teruggegeven. Uw component moet de HTML definiëren die nodig is om de vereiste inhoud te nemen en deze vervolgens naar wens weer te geven, zowel in de auteur- als in de publicatieomgeving.

De HTML Sjabloontaal gebruiken using-the-html-template-language

De Templating Templating Taal van de HTML (HTML), die met AEM 6.0 wordt geïntroduceerd, neemt de plaats van JSP (de Pagina's van JavaServer) als aangewezen en geadviseerd server-zijmalplaatjesysteem voor HTML. Voor webontwikkelaars die robuuste bedrijfswebsites moeten maken, helpt HTL om meer beveiliging en ontwikkelingsefficiëntie te bereiken.

NOTE
Hoewel zowel HTML als JSP voor het ontwikkelen van componenten kunnen worden gebruikt, zullen wij ontwikkeling met HTML op deze pagina illustreren, aangezien het de geadviseerde scripting taal voor AEM is.

De Content Logic ontwikkelen developing-the-content-logic

Deze optionele logica selecteert en/of berekent de inhoud die moet worden gerenderd. Deze wordt aangeroepen vanuit HTML-expressies met het juiste gebruik-API-patroon.

Het mechanisme om logica en verschijning te scheiden helpt verduidelijken wat voor een bepaalde mening wordt vereist. Het staat ook verschillende logica voor verschillende meningen van het zelfde middel toe.

Java gebruiken using-java

HTML Java gebruiken-API laat een HTML- dossier toe om helpermethodes in een klasse van douaneJavatoegang te hebben. Hiermee kunt u Java-code gebruiken om de logica voor het selecteren en configureren van de componentinhoud te implementeren.

JavaScript gebruiken using-javascript

HTML JavaScript gebruiken-API laat een HTML- dossier toe om tot helpercode toegang te hebben die in JavaScriptwordt geschreven. Hiermee kunt u JavaScript-code gebruiken om de logica voor het selecteren en configureren van de componentinhoud te implementeren.

Client-Side HTML-bibliotheken gebruiken using-client-side-html-libraries

Moderne websites zijn sterk afhankelijk van verwerking op de client door complexe JavaScript- en CSS-code. Het organiseren en optimaliseren van het gebruik van deze code kan een ingewikkeld probleem zijn.

Om met deze kwestie te helpen behandelen, AEM verstrekt Cliënt-zijOmslagen van de Bibliotheek, die u uw cliënt-zijcode in de bewaarplaats laten opslaan, het in categorieën organiseren en bepalen wanneer en hoe elke categorie van code aan de cliënt moet worden gediend. Het client-side bibliotheeksysteem zorgt vervolgens voor het maken van de juiste koppelingen in de uiteindelijke webpagina om de juiste code te laden.

Lees Gebruikend de Bibliotheken van de HTML van client-zijvoor meer informatie.

Werking bewerken configureren configuring-the-edit-behavior

U kunt het bewerkingsgedrag van een component configureren, inclusief kenmerken zoals handelingen die beschikbaar zijn voor de component, kenmerken van de plaatsingseditor en listeners die betrekking hebben op gebeurtenissen in de component. De configuratie wordt gebruikt voor zowel de aanraakinterface als de klassieke gebruikersinterface, maar met bepaalde specifieke verschillen.

Het geeft gedrag van een component uit wordt gevormddoor a cq:editConfig knoop van type cq:EditConfig onder de componentenknoop (van type cq:Component) toe te voegen en door specifieke eigenschappen en kindknopen toe te voegen.

Het gedrag Voorvertoning configureren configuring-the-preview-behavior

Het 🔗 koekje van de Wijze WCM wordt geplaatst wanneer het schakelen naar 3} wijze van de Voorproef {zelfs wanneer de pagina niet wordt verfrist.

Voor componenten met een teruggeven die voor de Wijze van WCM gevoelig zijn, moeten zij worden bepaald om zich specifiek te verfrissen, dan zich op de waarde van het koekje baseren.

NOTE
In aanraking-toegelaten UI slechts worden de waarden EDIT en PREVIEW gebruikt voor het 🔗 koekje van de Wijze WCM.

Een dialoogvenster maken en configureren creating-and-configuring-a-dialog

Dialogen worden gebruikt om auteur toe te staan om met de component in wisselwerking te staan. Het gebruiken van een dialoog staat auteurs en/of beheerders toe om inhoud uit te geven, de component te vormen of ontwerpparameters te bepalen (gebruikend de Dialoog van het Ontwerp van de a 🔗)

Gebruikersinterface voor koralen en graniet coral-ui-and-granite-ui

Koraal UIen graniet UIbepaalt het moderne blik en het gevoel van AEM.

graniet UI verstrekt een grote waaier van de basiscomponenten (widgets)nodig om uw dialoog over het auteursmilieu tot stand te brengen. Indien nodig kunt u deze selectie uitbreiden en uw eigen widgetcreëren.

Zie voor meer informatie:

NOTE
Wegens de aard van de componenten van Granite UI (en verschillen aan ExtJS widgets), zijn er sommige verschillen tussen hoe de componenten met aanraking-toegelaten UI en klassieke UIin wisselwerking staan.

Een nieuw dialoogvenster maken creating-a-new-dialog

Dialoogvensters voor de interface met aanraakbediening:

  • hebben de naam cq:dialog .

  • worden gedefinieerd als een nt:unstructured -knooppunt met de eigenschap sling:resourceType ingesteld.

  • bevinden zich onder hun cq:Component -node en naast de componentdefinitie.

  • worden op de server weergegeven (als Sling-componenten), op basis van hun inhoudsstructuur en de eigenschap sling:resourceType .

  • gebruik het Granite UI-framework.

  • bevatten een knoopstructuur die de gebieden binnen de dialoog beschrijft.

    • deze knooppunten hebben de eigenschap nt:unstructured required sling:resourceType .

Een voorbeeld van een knooppuntstructuur kan zijn:

newComponent (cq:Component)
  cq:dialog (nt:unstructured)
    content
      layout
      items
        column
          items
            file
            description

Het aanpassen van een dialoog is gelijkaardig aan het ontwikkelen van een component aangezien de dialoog zelf een component is (namelijk prijsverhoging die door een componentenmanuscript samen met gedrag/stijl door een cliëntbibliotheek wordt teruggegeven).

Zie voor voorbeelden:

  • /libs/foundation/components/text/cq:dialog
  • /libs/foundation/components/download/cq:dialog
NOTE
Als er voor een component geen dialoogvenster is gedefinieerd voor de interface met aanraakbediening, wordt het klassieke dialoogvenster UI gebruikt als fallback binnen een compatibiliteitslaag. Als u een dergelijk dialoogvenster wilt aanpassen, moet u het dialoogvenster voor klassieke gebruikersinterface aanpassen. Zie AEM Componenten voor Klassieke UI.

Dialoogvenstervelden aanpassen customizing-dialog-fields

Een nieuw veld maken creating-a-new-field

Widgets voor de interface met aanraakbediening worden geïmplementeerd als graniet-UI-componenten.

Om een widget voor gebruik in een componentendialoogvakje voor aanraking-toegelaten UI te creëren vereist u een graniet UI gebiedscomponentcreëren.

NOTE
Voor volledige details over granite UI, zie de documentatie van graniet UI.

Als u het dialoogvenster beschouwt als een eenvoudige container voor een formulierelement, kunt u ook de primaire inhoud van het dialoogvenster zien als formuliervelden. Voor het maken van een formulierveld moet u een brontype maken. Dit is hetzelfde als het maken van een component. Om u in die taak te helpen, biedt granite UI een generische gebiedscomponent aan om van (het gebruiken van sling:resourceSuperType) te erven:

/libs/granite/ui/components/coral/foundation/form/field

Specifieker verstrekt UI een waaier van gebiedscomponenten die voor gebruik in dialogen (of, meer in het algemeen, in vormen) geschikt zijn.

NOTE
Dit verschilt van de klassieke UI, waar widgets door cq:Widgets knopen worden vertegenwoordigd, elk met een bepaalde xtype om het verband met hun overeenkomstige widget te vestigen ExtJS. Vanuit implementatiestandpunt zijn deze widgets weergegeven aan de clientzijde door het ExtJS-framework.

Zodra u uw middeltype hebt gecreeerd, kunt u uw gebied concretiseren door een nieuw knooppunt in uw dialoog toe te voegen, met het bezit sling:resourceType dat naar het middeltype verwijst u net hebt geïntroduceerd.

Een clientbibliotheek maken voor stijl en gedrag creating-a-client-library-for-style-and-behavior

Als u het stileren en het gedrag voor uw component wilt bepalen, kunt u een specifieke cliëntbibliotheektot stand brengen die uw douane CSS/LESS en JS bepaalt.

Als u de clientbibliotheek alleen voor het dialoogvenster van de component wilt laden (dat wil zeggen dat deze niet voor een andere component wordt geladen), moet u de eigenschap extraClientlibs van het dialoogvenster instellen op de categorienaam van de clientbibliotheek die u hebt gemaakt. Dit is aan te raden als uw clientbibliotheek erg groot is en/of als uw veld specifiek is voor dat dialoogvenster en niet nodig is in andere dialoogvensters.

Als u de clientbibliotheek voor alle dialoogvensters wilt laden, stelt u de categorie-eigenschap van de clientbibliotheek in op cq.authoring.dialog . Dit is de categorienaam van de clientbibliotheek die standaard wordt opgenomen wanneer alle dialoogvensters worden weergegeven. U wilt dat doen als uw clientbibliotheek klein is en/of uw veld algemeen is en opnieuw kan worden gebruikt in andere dialoogvensters.

Zie voor een voorbeeld:

Een veld uitbreiden (overnemen van) extending-inheriting-from-a-field

Afhankelijk van uw vereisten kunt u:

  • Een bepaald veld voor een graniet-interface uitbreiden naar componentovererving ( sling:resourceSuperType)
  • Een bepaalde widget uitbreiden vanuit de onderliggende widgetbibliotheek (als er Granite UI is, is dit Coral UI), door de widgetbibliotheek-API (JS/CSS-overerving) te volgen

Toegang tot dialoogvelden access-to-dialog-fields

U kunt ook rendervoorwaarden ( rendercondition ) gebruiken om te bepalen wie toegang heeft tot specifieke tabbladen/velden in het dialoogvenster, bijvoorbeeld:

+ mybutton
  - sling:resourceType = granite/ui/components/coral/foundation/button
  + rendercondition
    - sling:resourceType = myapp/components/renderconditions/group
    - groups = ["administrators"]

Veldgebeurtenissen afhandelen handling-field-events

De methode om gebeurtenissen op dialooggebieden te behandelen wordt nu gedaan met luisteraars in een bibliotheek van de douanecliënt. Dit is een verandering van de oudere methode om luisteraars in de inhoudsstructuurte hebben.

Listeners in een aangepaste clientbibliotheek listeners-in-a-custom-client-library

Om logica in uw gebied te injecteren, zou u moeten:

  1. Heb uw gebied duidelijk met een bepaalde CSS klasse (de haak).
  2. Definieer in uw clientbibliotheek een JS-listener die is gekoppeld aan de naam van die CSS-klasse (dit zorgt ervoor dat uw aangepaste logica alleen binnen het bereik van uw veld valt en niet van invloed is op andere velden van hetzelfde type).

Hiervoor moet u weten welke onderliggende widgetbibliotheek u wilt gebruiken. Zie de documentatie van de Koraal UIom te identificeren aan welke gebeurtenis u wilt reageren. Dit lijkt op het proces dat u in het verleden met ExtJS moest uitvoeren: zoek de documentatiepagina van een bepaalde widget en controleer vervolgens de details van de gebeurtenis-API.

Zie voor een voorbeeld:

Listeners in de inhoudsstructuur listeners-in-the-content-structure

In de klassieke UI met ExtJS, was het gebruikelijk om luisteraars voor een bepaalde widget in de inhoudsstructuur te hebben. Hetzelfde bereiken in de interface met aanraakbediening is anders dan het bereiken van JS-listenercode (of enige andere code) wordt niet meer gedefinieerd in de inhoud.

De inhoudstructuur beschrijft de semantische structuur; het zou (moeten) niet de aard van de onderliggende widget moeten impliceren. Als u geen JS-code hebt in de inhoudsstructuur, kunt u de implementatiedetails wijzigen zonder de inhoudsstructuur te wijzigen. Met andere woorden, u kunt de widgetbibliotheek wijzigen zonder de inhoudsstructuur aan te raken.

Beschikbaarheid van dialoogvenster vaststellen dialog-ready

Als u een aangepaste JavaScript hebt die alleen moet worden uitgevoerd wanneer het dialoogvenster beschikbaar en gereed is, moet u luisteren naar de gebeurtenis dialog-ready .

Deze gebeurtenis wordt geactiveerd wanneer het dialoogvenster wordt geladen (of opnieuw wordt geladen) en klaar voor gebruik is. Dit houdt in dat telkens wanneer er een wijziging (maken/bijwerken) plaatsvindt in de DOM van het dialoogvenster.

dialog-ready kan worden gebruikt om in aangepaste JavaScript-code die aanpassingen uitvoert op de velden in een dialoogvenster of vergelijkbare taken, aan elkaar te koppelen.

Veldvalidatie field-validation

Verplicht veld mandatory-field

Als u een bepaald veld wilt markeren als een verplicht veld, stelt u de volgende eigenschap in op het inhoudsknooppunt van het veld:

  • Naam: required
  • Type: Boolean

Zie voor een voorbeeld:

/libs/foundation/components/page/cq:dialog/content/items/tabs/items/basic/items/column/items/title/items/title

Veldvalidatie (graniet-UI) field-validation-granite-ui

Veldvalidatie in de gebruikersinterface van Granite en de componenten van de gebruikersinterface van Granite (equivalent aan widgets) wordt uitgevoerd met de API foundation-validation . zie de foundation-valdiation documentatie van Granite voor details.

Zie voor voorbeelden:

  • cqgems/customizingfield/components/clientlibs/customizingfield/js/validations.js

  • /libs/cq/gui/components/authoring/dialog/clientlibs/dialog/js/validations.js

Een ontwerpdialoogvenster maken en configureren creating-and-configuring-a-design-dialog

De dialoog van het Ontwerp wordt verstrekt wanneer een component ontwerpdetails heeft die in Wijze van het Ontwerpkunnen worden uitgegeven.

De definitie is zeer gelijkaardig aan dat van a dialoog die voor het uitgeven van inhoudwordt gebruikt, met het verschil dat het als knoop wordt bepaald:

  • Node name: cq:design_dialog
  • Type: nt:unstructured

Een Inplace Editor maken en configureren creating-and-configuring-an-inplace-editor

Met een installatieeditor kan de gebruiker inhoud rechtstreeks in de alineasstroom bewerken, zonder dat een dialoogvenster hoeft te worden geopend. De standaardcomponenten Tekst en Titel hebben bijvoorbeeld beide een geïntegreerde editor.

Een plaatsredacteur is niet noodzakelijk/zinvol voor elk componenttype.

Zie Uitbreidend de Authoring van de Pagina - voeg Nieuwe Inplace Redacteurvoor meer informatie toe.

De werkbalk Component aanpassen customizing-the-component-toolbar

De Toolbar van de Componentgeeft de gebruikerstoegang tot een waaier van acties voor de component zoals uitgeven, vormen, kopiëren, en schrappen.

Zie Uitbreidend de Authoring van de Pagina - voeg Nieuwe Actie aan Toolbar van de Componentvoor meer informatie toe.

Een component voor de referentierail configureren (geleend/geleend) configuring-a-component-for-the-references-rail-borrowed-lent

Als uw nieuwe componentenverwijzingen inhoud van andere pagina's dan u kunt overwegen of u het de Geleende Inhoud en Lent Inhoud secties van het Rail van Verwijzingen wilt beïnvloeden.

Uit-de-doos AEM slechts de component van de Verwijzing. Om uw component toe te voegen moet u de OSGi bundel WCM vormen Authoring Configuratie van de Verwijzing van de Inhoud.

Maak een item in de definitie en geef de component op, samen met de eigenschap die moet worden gecontroleerd. Bijvoorbeeld:

/apps/<*your-Project*>/components/reference@parentPath

NOTE
Wanneer het werken met AEM, zijn er verscheidene methodes om de configuratiemontages voor dergelijke diensten te beheren. Zie Vormend OSGivoor meer details en geadviseerde praktijken.

De component inschakelen en toevoegen aan het alineasysteem enabling-and-adding-your-component-to-the-paragraph-system

Nadat het onderdeel is ontwikkeld, moet het zijn ingeschakeld voor gebruik in een geschikt alineasysteem, zodat het op de vereiste pagina's kan worden gebruikt.

Dit kan gebeuren door:

Een alineasysteem configureren, zodat een componentinstantie wordt gemaakt wanneer u een element sleept configuring-a-paragraph-system-so-that-dragging-an-asset-creates-a-component-instance

AEM biedt de mogelijkheid aan om een paragraafsysteem op uw pagina te vormen zodat een geval van uw nieuwe component automatisch wordt gecreeerd wanneer een gebruiker (aangewezen) activa op een geval van die pagina(in plaats van het moeten altijd een lege component aan de pagina) sleept.

Dit gedrag, en de vereiste activa-aan-component verhouding kan worden gevormd:

  1. Onder de alinea-definitie van het paginaontwerp. Bijvoorbeeld:

    • /etc/designs/<myApp>/page/par

    Een knooppunt maken:

    • Naam: cq:authoring
    • Type: nt:unstructured
  2. Onder dit, creeer een knoop om al activa-aan-component afbeeldingen te houden:

    • Naam: assetToComponentMapping
    • Type: nt:unstructured
  3. Voor elke element-aan-component afbeelding creeer een knoop:

    • Naam: tekst. Het wordt aanbevolen dat de naam het element en het type verwante component aanduidt, bijvoorbeeld de afbeelding
    • Type: nt:unstructured

    Elke eigenschap heeft de volgende eigenschappen:

    • assetGroup :

      • Type: String
      • Waarde: de groep waartoe het gerelateerde element behoort, bijvoorbeeld media
    • assetMimetype:

      • Type: String
      • Waarde: het mime-type van het gerelateerde element, bijvoorbeeld image/*
    • droptarget:

      • Type: String
      • Waarde: het doel voor neerzetten, bijvoorbeeld image
    • resourceType:

      • Type: String
      • Waarde: de gerelateerde componentbron; bijvoorbeeld foundation/components/image
    • type:

      • Type: String
      • Waarde: het type, bijvoorbeeld Images

Zie voor voorbeelden:

  • /etc/designs/geometrixx/jcr:content/page/par/cq:authoring
  • /etc/designs/geometrixx-outdoors/jcr:content/page/par/cq:authoring
  • /etc/designs/geometrixx-media/jcr:content/article/article-content-par/cq:authoring

CODE VOOR GITHUB

U kunt de code van deze pagina op GitHub vinden

NOTE
De automatische verwezenlijking van componenteninstanties kan nu gemakkelijk binnen UI worden gevormd wanneer het gebruiken van Componenten van de Kernen Bewerkbare Malplaatjes. Zie Creërend de Malplaatjes van de Paginavoor meer informatie over het bepalen van welke componenten automatisch met bepaalde media types worden geassocieerd.

De extensie AEM accolades gebruiken using-the-aem-brackets-extension

De AEM Uitbreiding van Bracketsverstrekt een vlotte werkschema om AEM componenten en cliëntbibliotheken uit te geven. Het is gebaseerd op de 🔗 coderedacteur 0} Brackets {.

De extensie:

  • Vereenvoudigt synchronisatie (geen Maven of File Vault vereist) om de efficiëntie van ontwikkelaars te verhogen en helpt ook front-end ontwikkelaars met beperkte AEM kennis om aan projecten deel te nemen.
  • Verstrekt wat HTMLsteun, de malplaatjetaal die wordt ontworpen om componentenontwikkeling te vereenvoudigen en veiligheid te verhogen.
NOTE
Brackets is het aanbevolen mechanisme voor het maken van componenten. Het vervangt CRXDE Lite - creeer de functionaliteit van de Component, die voor klassieke UI werd ontworpen.

Migreren vanuit een klassieke component migrating-from-a-classic-component

Bij het migreren van een component die is ontworpen voor gebruik met de klassieke UI naar een component die met touch-enabled UI (of slechts of gezamenlijk) kan worden gebruikt zouden de volgende kwesties moeten worden overwogen:

cq:listenercode migreren migrating-cq-listener-code

Als u een project migreert dat voor klassieke UI werd ontworpen, dan zou cq:listener code (en component verwante clientlibs) functies kunnen gebruiken die voor klassieke UI (zoals CQ.wcm.*) specifiek zijn. Voor de migratie moet u dergelijke code bijwerken met behulp van de equivalente objecten/functies in de interface met aanraakbediening.

Als uw project volledig wordt gemigreerd naar de interface met aanraakbediening, moet u deze code vervangen om de objecten en functies te gebruiken die relevant zijn voor de interface met aanraakbediening.

Nochtans, als uw project zowel klassieke UI als aanraking-toegelaten UI tijdens de migratieperiode (het gebruikelijke scenario) moet behandelen, dan moet u een schakelaar uitvoeren om de afzonderlijke code te onderscheiden die de aangewezen voorwerpen van verwijzingen voorziet.

Dit schakelaarmechanisme kan als worden uitgevoerd:

if (Granite.author) {
    // touch UI
} else {
    // classic UI
}

Uw component documenteren documenting-your-component

Als ontwikkelaar wilt u gemakkelijk toegang tot componentendocumentatie zodat u snel kunt begrijpen:

  • Beschrijving
  • Beoogd gebruik
  • Inhoudsstructuur en eigenschappen
  • Toegankelijke API's en uitbreidingspunten
  • En zo verder

Daarom is het eenvoudig om bestaande documentatiemarkering die u binnen de component zelf beschikbaar hebt, te maken.

Plaats een README.md -bestand in de componentstructuur. Deze prijsdaling wordt getoond in de componentenconsole.

chlimage_1-7

De gesteunde prijsdaling is het zelfde als dat voor inhoudsfragmenten.

recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2