javascript - 为什么我们需要 Angular 服务
问题描述
所以从 React.js 出来后,我开始学习 Angular。在我看来,很多事情都不必要过于复杂,为什么我需要将组件导入文件和角度应用程序。现在我想我明白了主要的想法,Angular 是一个完整的包(或应用程序),它提供了比 React 更多的功能,并且它的所有组件都需要获得奖励。
但我仍然不明白为什么我们需要服务。我了解服务的想法和概念,我可以创建具有所有用户调用的“UserService”并将其注入不同的组件。但是如果我将所有的功能都放到一个普通的js填充中,然后导入到组件中,会不会一样呢?
我将澄清我的问题,在 Angular 应用程序中使用 Angular 服务而不是导出所有功能的常规 js 填充是否有任何优势或需要?
解决方案
使用服务可以帮助您隔离控制器执行业务逻辑、通信和存储相关的事情,因为服务旨在用于业务逻辑或与存储使用的服务器通信。
使用这种方法,您将控制器仅用于视图管理、数据绑定、表单验证、用户交互等,并单独关注 Angular 应用程序的可测试性,这就是您可以更轻松地编写单元测试(如 Karma)的原因。
Controller 是一个构造函数,像一个类一样工作,Angular 每次创建视图时都会创建控制器的新实例,并在视图被销毁时销毁控制器。控制器不适合在整个应用程序生命周期中保存应用程序数据。这就是为什么不应该直接在视图中使用服务,而是需要将它们注入到控制器中。服务不应操纵 DOM 对象,无论是 HTML 还是 CSS。
推荐阅读
- uwp-xaml - 如何在较低版本中管理 TextBlock 的 HorizontalTextAlignment?
- powershell - 如何将 PowerShell 哈希对象打印为哈希对象?
- laravel - Laravel belongsToMany attach() 方法在同一关系上使用 contains 方法后不起作用
- google-apps-script - 如何将值复制到选定单元格之前的 6 列?
- c++ - 编译错误:2 个重载对“this”指针没有合法转换。使用结构
- xaml - 如何在 DataGridTemplate 列中获得默认的 ComboBox 行为?
- apache - 多服务器目录配置的通用 .htaccess 重写规则
- c++ - 不能从函数返回字符串
- javascript - 如何使用 DOM 隔离元素
- javascript - 无法在页面加载时加载 API 函数 - Javascript