¿Qué es una directiva AngularJS?


He pasado bastante tiempo leyendo la documentación de AngularJS y varios tutoriales, y me ha sorprendido lo inaccesible que es la documentación.

Tengo una pregunta simple y respondible que también puede ser útil para otros que buscan recoger AngularJS:

¿Qué es una directiva AngularJS?

Debería haber una definición simple y precisa de una directiva en alguna parte, pero el sitio web AngularJS ofrece estas sorprendentemente inútiles definiciones:

En la página de inicio:

Las directivas son una característica única y potente disponible en AngularJS. Las directivas le permiten inventar una nueva sintaxis HTML, específica para su aplicación.

En la documentación para desarrolladores :

Las directivas son una forma de enseñar nuevos trucos en HTML. Durante la compilación DOM las directivas se comparan con el HTML y se ejecutan. Esto permite a las directivas registrar el comportamiento, o transformar DOM.

Y hay una serie de charlas sobre directivas que, irónicamente, parecen asumir que la audiencia ya entiende lo que son.

¿Podría alguien ofrecer, para una referencia clara, una definición precisa de lo que es una directiva que explica:

  1. Qué es (véase la definición clara de jQuery como ejemplo)
  2. Qué problemas y situaciones prácticas se pretende abordar
  3. ¿Qué patrón de diseño es encarna, o alternativamente, cómo encaja en la supuesta misión MVC / MVW de AngularJS.

Warning: Undefined property: agent_blog_content::$date_asked in /var/www/agent_etc/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 32

Warning: Undefined property: agent_blog_content::$count_answers in /var/www/agent_etc/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 52