我已经阅读了很多文档,但是越来越困惑了。
基本上我搞不清楚 `服务(service)`、`指令(directive)` 和 `模块(module)` 之间的区别。
我看到很多自定义组件。有时它们使用指令,有时使用服务。一切都始于模块。可以举个例子解释一下这三种类型之间的区别吗?
我看到很多自定义组件。有时它们使用指令,有时使用服务。一切都始于模块。可以举个例子解释一下这三种类型之间的区别吗?
根据我的个人笔记(主要是从文档、Google组帖子和SO帖子中提取的片段):
模块
服务
指令(下面的一些项目本质上说相同的事情,但我发现有时稍微不同的措辞会很有帮助)
在模块中定义和组合Angular事物(依赖注入等)。
在服务中共享数据并包装Web服务器交互。
在指令中扩展HTML和进行DOM操作。
并使控制器尽可能"薄"。
将模块视为连接指令、服务、常量等多个其他项的位置。这些模块可以注入到其他模块中,使您能够高度重复使用。
编写Angular应用程序时,您将拥有一个顶层模块,它是您的应用程序代码(不包括模板)。
服务主要是在控制器之间通信的一种方式,但您可以在一个服务中注入另一个服务。通常将服务用作访问数据存储库的方式,人们会封装Angular API(如ngResource)。此技术很有用,因为它使测试(特别是模拟)非常容易。您还可以为其他事情创建服务,例如身份验证、日志记录等。
指令用于创建小部件或包装现有内容,例如jQuery插件。包装现有插件可能有挑战性,您之所以这样做是为了在插件和Angular之间建立双向数据绑定。如果您不需要双向数据绑定,则不需要将其包装。
指令也是进行DOM操作、捕获DOM事件等的位置。您不应该在控制器或服务中执行与DOM相关的操作。创建指令可能变得非常复杂。我个人认为,首先查看API是否可以实现您要寻找的内容,或者向Angular的Google Group寻求建议。