2015-06-05 150 views
6

当我用node.js创建一个简单的网站时,我很好地使用视图引擎(例如.jade)和向其提供数据的控制器(例如,简单的待办事项列表)。但是,如果我决定添加AngularJS作为客户端框架,那么似乎我必须在后端实现REST API以从中获取数据。几乎我在AngularJS上看到的所有示例都具有以下基本架构:客户端(角)通过REST API与服务器进行通信。AngularJS可以在没有REST API的情况下使用吗?

AngularJS可以在没有REST API的情况下使用,如果是的话,我应该做还是应该避免它?是否有没有REST API后端使用AngularJS的建议/最佳实践?

+0

为什么要使用非RESTful后端为您的应用程序? – ThiefMaster

+1

只需将REST API和Angular.js的node.js用作客户端框架,即可与后端进行通信。如果你害怕REST,请记住,这是无痛苦的工作。 – softvar

+0

@ThiefMaster,因为我已经有了在控制器和jade文件中实现的node.js + jade + logic的工作应用程序(比如if/else,loops等等)。将AngularJS添加到混合中将需要重写当前的逻辑以使其可以从REST API获得。我想知道如果没有这种努力,我可以使用AngularJS。 – matori82

回答

5

绝对。即使您从未使用$http服务与您的服务器交谈,Angular仍然可以在您的网站上做很多事情。您仍然可以利用这些实用程序来帮助管理DOM。

也就是说,大多数现代应用程序需要从服务器获取数据。有很多原因可能会导致你需要这样做。例如,如果您的用户需要注册,那么您需要在某处存储用户名和密码。那个地方应该只在你的服务器可以访问的数据库中。然后你的服务器会提供一些URL,你可以通过Angular的$http服务与之交谈。

如果您确实有一个可以拨打服务器的应用程序,但您想要关闭网络通信以进行测试,则可以拨打mock$http来调用回复。为了确切的目的,Angular提供了一个$httpBackend。您可以使用它设置假装URL以假装对您的$http呼叫做出响应,以便您的$http呼叫不知道它们实际上没有与服务器通话。

authRequestHandler = $httpBackend.when('GET', '/auth.py') 
         .respond({userId: 'userX'}, {'A-Token': 'xxx'}); 

适合在测试期间测试没有REST后端的代码。

1

代表性状态转移的简称REST基本上是事物或资源而不是动作。是的,AngularJS可以在没有REST API的情况下使用。

1

您可以使用nodeJS作为您的restful API和AngularJS作为您的javascript框架。

即使没有一个RESTful API AnguarlJS是在一个项目中使用,虽然以它的全部潜力(完全缩放的Web应用程序)的使用它,那么你就需要一个RESTful API一个非常强大的工具。

0

使用$ HTTP的REST风格的API不REST的API 使用$资源

相关问题