Advanced Components
  • Welcome
  • Start here
    • Setup
    • Dependencies
  • Getting Started
    • Front-end tooling
    • Create a new D9 theme
    • Component Architecture
    • Drupal Best Practices
    • Drupal Attributes
    • Twig Blocks
  • Basic Components
    • Global styles
    • Adding webfonts
    • Heading Component
      • Improving the Heading
    • Button Component
  • A component's lifecycle
    • Hero Component
    • Include statements
    • Drupal prep
    • Drupal entities
    • Homepage content type
    • View modes
    • Add Hero to homepage
    • Drupal cache & twig debugging
    • Twig template suggestions
    • Getting field values
    • Integrating the Hero
    • Drupal Libraries
    • Hero Image styles
  • Card component
    • Card Component
    • Component Variants
    • Card Variant
    • Author component
  • Drupal site building
    • Blog articles
    • View modes
    • Drupal Views
    • Author
    • Generate content
    • Adding Blog Lists to the Homepage
  • Drupal Integrations
    • Integrating the Card
      • Taxonomy terms
    • Integrating the Card Wide
    • Author integration
    • From our blog
    • Integrating From our blog
    • Featured Content
    • Integrating Featured Content
    • Blog image styles
    • Blog detail page
  • Extras
    • Image Styles
    • Navigation
  • Resources
    • Resources
Powered by GitBook
On this page

Was this helpful?

  1. Getting Started

Component Architecture

PreviousCreate a new D9 themeNextDrupal Best Practices

Last updated 2 years ago

Was this helpful?

I typically recommend to group components or patterns in individual folders within your Drupal theme. This not only provides organization as your catalog of components grows, but it also makes each component completely reusable and even portable as all the pieces of a component are encapsulated in a single folder. Here's an example of a typical component architecture. Your particular workflow may vary.

+
|--src
|  |--patterns
|     |--components
|        |--card
|           |-- card.js
|           |-- card.md
|           |-- card.scss
|           |-- card.twig
|           |-- card.json
+

A component is typically broken down in four parts:

  • Markup: Markup or HTML for a component is written in .

  • Data: Demo or stock data for components is usually provided in YAML or JSON format. These are lightweight formats for storing data. In this training we will use JSON (JavaScript Object Notation).

  • Styles: These are written in CSS or SCSS.

  • Behavior/interaction: The component's behaviors are usually handled with JavaScript. Most components don't need JavaScript.

  • Annotations (Optional): Annotations are used to document the details of a component and are typically written in markdown format (.md). This is extremely useful for teams because it outlines technical details of a pattern such as variable names, attributes, data structure, etc.

Twig templates, Drupal 8's templating engine