Answers:
可以将模块视为连接其他许多事物的地方,例如指令,服务,常量等。模块可以注入到其他模块中,从而使您可以高度重用。
编写有角度的应用程序时,您将拥有一个顶级模块,即您的应用程序代码(没有模板)。
服务主要是控制器之间进行通信的一种方式,但是您可以将一个服务注入另一个服务。服务通常被用作访问数据存储的一种方式,人们会包装Angular API,例如ngResource。该技术很有用,因为它使测试(尤其是模拟)变得非常容易。您可以使用服务来执行其他操作,例如身份验证,日志记录等。
指令用于创建窗口小部件或包装jquery插件之类的现有内容。包装现有的插件可能是一个挑战,您这样做的原因是在插件和angular之间建立双向数据绑定。如果不需要双向数据绑定,则不需要包装它们。
指令也是进行DOM操作,捕获DOM事件等的地方。您不应在控制器或服务中进行与DOM相关的工作。创建指令可能会变得非常复杂。恕我直言,我建议您首先查看可以满足您需求的API,或者向Angular的Google小组寻求建议。
从我自己的个人笔记(主要是文档,Google网上论坛帖子和SO帖子的摘要)中:
模组
服务
指令(以下某些项目在本质上是相同的,但我发现有时措辞略有不同会有所帮助)
在模块中定义和分组Angular事物(依赖注入事物)。
共享数据并将Web服务器交互包装在服务中。
扩展HTML并在指令中执行DOM操作。
并使控制器尽可能“薄”。