Passei bastante tempo lendo a documentação do AngularJS e vários tutoriais e fiquei bastante surpreso com o quão inacessível é a documentação.
Tenho uma pergunta simples e respondível que também pode ser útil para outras pessoas que desejam adquirir o AngularJS:
O que é uma diretiva AngularJS?
Deve haver uma definição simples e precisa de uma diretiva em algum lugar, mas o site do AngularJS oferece essas definições surpreendentemente inúteis:
As diretivas são um recurso exclusivo e poderoso disponível no AngularJS. As diretivas permitem que você invente uma nova sintaxe HTML, específica para seu aplicativo.
Na documentação do desenvolvedor :
As diretivas são uma maneira de ensinar novos truques em HTML. Durante a compilação do DOM, as diretivas são comparadas com o HTML e executadas. Isso permite que as diretivas registrem o comportamento ou transformem o DOM.
E há uma série de palestras sobre diretrizes que, ironicamente, parecem assumir que o público já entende o que são.
Alguém seria capaz de oferecer, para referência clara, uma definição precisa do que é uma diretiva que explica:
fonte
Respostas:
Uma diretiva é essencialmente uma função † que é executada quando o compilador Angular a encontra no DOM. A (s) função (s) pode (m) fazer quase tudo, e é por isso que acho que é bastante difícil definir o que é uma diretiva. Cada diretiva possui um nome (como ng-repeat, tabs, make-up-yourself) e cada diretiva determina onde pode ser usada: elemento, atributo, classe, em um comentário.
† Normalmente, uma diretiva possui apenas uma função de link (pós). Uma diretiva complicada pode ter uma função de compilação, uma função de pré-link e uma função de pós-link.
A coisa mais poderosa que as diretivas podem fazer é estender o HTML. Suas extensões são uma linguagem específica de domínio (DSL) para criar seu aplicativo. Por exemplo, se seu aplicativo executar um site de compras on-line, você poderá estender o HTML para ter diretivas "carrinho de compras", "cupom", "promoções" etc. etc. - quaisquer palavras, objetos ou conceitos que sejam mais naturais para usar nas " compras on-line ", em vez de" div "se" span "s (como o @WTK já mencionou).
As diretivas também podem componente HTML - agrupe um monte de HTML em algum componente reutilizável. Se você estiver usando o ng-include para extrair muito HTML, provavelmente é hora de refatorar as diretivas.
As diretivas são onde você manipula o DOM e captura os eventos do DOM. É por isso que as funções de compilação e link da diretiva recebem o "elemento" como argumento. Você pode
Em HTML temos coisas como
<a href="...">
,<img src="...">
,<br>
,<table><tr><th>
. Como você descreveria o que são a, href, img, src, br, table, tr e th? Isso é o que é uma diretiva.fonte
<!-- directive: my-directive exp -->
<div></div>
uma diretiva? Tu disseste sim. Mas não há decoração aqui (via elemento, classe, comentário, atributo). As pessoas aqui estão dizendo que esses são marcadores para um DOM HTML . Você pode esclarecer ? (Eu não estou falando sobre a causa onde você pode criar uma directiva para um elemento simples como<div>
)Talvez uma definição realmente simples e inicial de diretivas angulares seja
Alguns exemplos disso seriam
Confira este tutorial, pelo menos para mim, foi uma das melhores introduções ao Angular. Uma abordagem mais completa seria tudo o que o @ mark-rajcok disse antes.
fonte
Analisando a documentação, as diretivas são estruturas que você pode escrever que angularjs analisa para criar objetos e comportamentos.Em outras palavras, é um modelo no qual você usa a combinação de nós arbitrários e pseudo-javascript e espaços reservados para dados para expressar intenções de como seu widget (componente) está estruturado, como se comporta e como é alimentado com dados. O Angularjs então executa essas diretivas para convertê- las em código html / javascript.
As diretivas existem para que você possa criar componentes mais complexos (widgets) usando a semântica adequada. Basta dar uma olhada no exemplo de diretivas angularjs - elas estão definindo o painel de guias (o que não é válido em HTML comum). É mais intuitivo do que usar div-s ou spans para criar uma estrutura que é estilizada para parecer um painel de guias.
fonte
Nas diretivas AngularJS, são marcadores html re para um elemento HTML DOM, como um atributo (restrito-A), nome do elemento (restrito-E), comentário (restrito-M) ou classe CSS (restrito-C) que informa ao compilador HTML do AngularJS ($ compilar) para executar um comportamento especificado para esse elemento DOM ou até mesmo transformar o elemento DOM e seus filhos. Alguns exemplos são ng-bind, ng-hide / show etc.
fonte
A página inicial é muito clara sobre isso: quando você passa o mouse sobre as guias na última seção:
Em seguida, na próxima guia:
Assim, você pode inventar elementos html, ou seja,
tabs
e deixar angular manipular a renderização desses elementos.fonte