2

我是 AngularJS 的初学者。我目前一直在尝试提取硬编码的 JSON(后端和服务器数据尚未准备好)。似乎为了提取数据,例如在使用非常常见的 ng-repeat 时,我需要知道数据库结构(因为呈现的 JSON 将反映该结构,对吧?)。

因此,虽然我可以独立于后端进行编码,但我是否正确地假设我必须知道数据库结构?例如...我可能想提取用户评论数据。这可能在它自己的数据库中,我可能会这样做:ng-repeat='comment in comments' 并在数据库中的每个评论条目中过滤特定用户。而如果评论仅在用户表中,它将是 ng-repeat='comment in user[0].comments'。我想前者是正确的方法,但老实说,我从未了解过正确的数据库结构。不过,为了正确实现 AngularJS,您似乎必须知道这一点。

任何帮助表示赞赏。我真的很想确保我正确地处理事情。谢谢!

4

1 回答 1

2

我认为您不需要(或应该)知道数据库结构。AngularJS 是一个 MVC 框架。这种架构的一个基本原则是关注点分离。简单地说:不要混用东西,但更具体地说,您是在谈论两个系统之间的通信:本地系统(运行 angularJS 的浏览器)和远程系统(可能或可能不同的服务器)将角度文件提供给客户端)

例如,您的视图不应该访问您的数据库(如果您正在使用 PHP,那么您不应该mysql_query(...)在视图中拥有类似的东西)。

您还应该将组件设计为松散耦合:使它们尽可能独立。单元测试帮助你以这种方式思考,AngularJS 对 karma 的单元测试特别友好。遵循这个原则,如果你使用 twitter API 在你的 angularJS 应用程序中显示推文怎么办?你不需要了解 twitter 的内部结构。有一个 API 以您可以使用的格式提供此 JSON。您的后端应该提供这个(例如,使用外观控制器),并且您应该与后端团队达成一致,哪些数据可用。

不要让你的设计依赖于数据库结构,而是让后端 API 依赖于你的需求。这样,您将拥有两个松散耦合的系统,并且后端团队可以在不影响您的情况下为所欲为。例如,更改 DBMS 或表的结构。

如果您想提取评论,您可能有一个远程调用 ($httpng-resource),它会在服务或控制器。服务器用一个代表这个的 json 文件进行响应(可能很快就会需要更多的东西,比如个人资料图片 url、用户 ID 等)。然后,您将要公开的数据(您从服务器获取的数据的子集)放入$scope.

于 2013-06-02T14:25:06.960 回答