angularJS - webapp架构

时间:2016-02-09 18:33:49

标签: angularjs architecture

我必须构建一个angularJS webapp并找到许多最佳实践资源,但仍有一些问题没有得到解答。我希望你能帮助我。

问题1:模型

有一件事是,我应该在哪里存储我的模型并处理它的变化? 我发现了一些不同的解决方案,但它们都是针对简单的数据结构。我有类似用户的东西--->订阅--->设备---> HardwareReport。这只是数据结构树的一个分支。 我的问题是我应该在哪里存储它,以便每个Controller都可以访问数据。

当前解决方案:

当前的解决方案不是存储数据结构,而是为每个对象类型提供服务,如 UserService SubscriptionService 。 并且每个服务都处理与后端服务器的通信,并将返回值保存在缓存中。

缺点: 如果控制器需要例如用户的所有设备,则它必须处理所有服务,并且不能仅通过数据结构树。如果一个控制器改变例如用户的设备对象,该怎么办?我应该如何通知其他控制器?

问题2:延迟配置/实例化服务

以下是该应用程序的一部分。

我有一个 AppController LoginController 和一个 MapController

我有一个 BackendService ,它封装了API调用,并由 UserService SubscriptionService 使用。

当我登录我的webapp时, LoginController 使用 SessionService 来验证登录数据并接收API的accessToken。 必须在 BackendService 中设置此accessToken才能添加到标头中。 但BackendService已经注入其他服务。

当前解决方案: 只需从LoginController设置AccessToken,如

BackendService.setAuth(accessToken);

由于服务是单件服务,因此使用 BackendService 的所有其他服务都将具有正确的设置 BackendService

缺点: 在设置访问令牌之前,我可以调用 BackendService 的函数,这会导致错误。

**替代解决方案:** 我只是实现了一个 BackendServiceFactory ,我可以随时使用它来创建一个新的BackendService实例。所以我可以在登录后在LoginController中创建 BackendService

下行:我必须通过我的所有服务和控制器传递此对象,因为它不会被DI注入。

很长的问题,但我希望你能给我一些建议如何构建这个应用程序。

0 个答案:

没有答案