Link vs compile vs controlador

Quando você cria uma diretiva, você pode colocar o código no compilador, na função de link ou no controlador.

Nos documentos, eles explicam que:

funções de compilação e link são usadas em diferentes fases do ciclo angularcontroladores são compartilhados entre diretivas

No entanto, para mim não está claro, que tipo de código deve ir para onde.

Por exemplo: Posso criar funções na compilação e anexá-las ao escopo no link ou anexar apenas funções ao escopo no controlador?

Como os controladores são compartilhados entre diretivas, se cada diretiva pode ter seu próprio controlador? Os controladores são realmente compartilhados ou são apenas as propriedades do escopo?

questionAnswers(6)

yourAnswerToTheQuestion