HTL encourages separation of concerns by not allowing business logic to mix with markup. Business logic can be implemented through the Use-API.

The following table gives an overview of the advantages and disadvantages of each API.

Java Use-API JavaScript Use-API
  • Faster
  • Can be inspected with a debugger
  • Easy to unit-test
  • Can be modified by front-end developers
  • Is located within the component, keeping the view logic of a component close to its corresponding template
  • Cannot be modified by front-end developers
  • Slower
  • No debugger (yet)
  • Harder to unit-test

For page components, it is recommended to use a mixed model, where all model logic is located in Java, providing clear APIs that are agnostic to anything that happens in the view (i.e. within the components). AEM comes with great default models like the Page or the Resource API that should be able to cover most cases.

All view logic that is specific to a component should be placed within that component as JavaScript, because it belongs to that component.

On this page