AngularJS中编译/链接函数和控制器函数之间的区别?

mhe*_*ens 5 angularjs angularjs-directive angularjs-controller

我正在尝试编写自己的AngularJS指令.我想我理解compilelink功能之间的区别.这段视频很好地清除了它.

但我现在不确定我是否理解控制器在指令中扮演的角色.一个指令可以包括一个controller功能,你可以注入$element,$attrs而这种进入,所以它可以做几乎所有的link周围的功能可以做到,我相信,其他的方式.

所以我有两个问题:

  1. controller功能和link功能之间是否存在重要的技术差异?
  2. 什么是最佳做法?我应该做哪些工作?