# Overview

Aurelia 2’s templating system offers a powerful and intuitive way to build and manage the user interface of your web application. It goes beyond the traditional boundaries of HTML, infusing it with enhanced capabilities to create dynamic and interactive user experiences. At the heart of Aurelia 2's templating is the seamless connection between your HTML templates and the underlying JavaScript or TypeScript code, enabling a responsive and data-driven UI.

In Aurelia 2, templates are not just static HTML files. They are dynamic views that interact with the underlying logic of your application, responding to user actions and data changes. This integration makes your development process more efficient, allowing you to build complex UIs with less code and greater clarity.

From the moment you scaffold a new Aurelia 2 project, you engage with templates that are both familiar in their HTML structure and powerful in their extended functionality. Whether defining the layout for a new component or displaying data in your HTML, Aurelia 2's templating syntax is designed to be both developer-friendly and highly expressive.

## Features of Aurelia Templating

- **Two-Way Data Binding:** Aurelia's robust data binding system ensures a seamless data flow between your application’s model and the view, keeping both in sync without extra effort.
- **Custom Elements and Attributes:** Extend your HTML with custom elements and attributes that encapsulate complex behaviors, promoting code reuse and modularity.
- **Adaptive Dynamic Composition:** Dynamically render components and templates based on your application's state or user interactions, enabling the creation of flexible and adaptive UIs.
- **Rich Templating Syntax:** Utilize Aurelia's powerful templating syntax for iterating over data, conditionally rendering parts of your UI, and easily handling events.
- **Expression and Interpolation:** Effortlessly bind data to your templates and manipulate attributes with Aurelia’s straightforward expression syntax.
