【问题标题】:Can AngularJS be used without a REST API?AngularJS 可以在没有 REST API 的情况下使用吗?
【发布时间】:2015-08-20 23:59:09
【问题描述】:

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

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

【问题讨论】:

  • 为什么要为您的应用程序使用非 RESTful 后端?
  • 只需将 node.js 用于您的 REST API 和 Angular.js 作为客户端框架,与您的后端通信。如果您害怕 REST,请注意,这是一项轻松的工作。
  • @ThiefMaster,因为我已经在控制器和翡翠文件中实现了 node.js + 翡翠 + 逻辑的工作应用程序(例如 if/else、循环等......)。将 AngularJS 添加到混合中将需要我重写当前逻辑以使其可从 REST API 使用。我想知道我是否可以在不费力的情况下使用 AngularJS。

标签: javascript angularjs node.js rest


【解决方案1】:

当然。即使您从未使用$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 后端的情况下测试您的代码。

【讨论】:

    【解决方案2】:

    REST 是 Representational state transfer 的缩写,基本上是事物或资源,而不是动作。是的,AngularJS 可以在没有 REST API 的情况下使用。

    【讨论】:

      【解决方案3】:

      您可以将 nodeJS 用于您的 RESTful API,并将 AngularJS 用作您的 javascript 框架。

      即使没有 RESTful API,AnguarlJS 也是一个在项目中使用的非常强大的工具,尽管要充分利用它的潜力(完全缩放的网络应用程序),那么你需要一个 RESTful API。 p>

      【讨论】:

        【解决方案4】:

        将 $http 用于非 RESTful API 将 $resource 用于 RESTful API

        【讨论】:

          猜你喜欢
          • 2020-10-15
          • 2020-10-23
          • 1970-01-01
          • 2015-08-27
          • 2012-03-21
          • 2013-05-28
          • 2015-12-27
          • 2011-02-15
          • 2017-08-08
          相关资源
          最近更新 更多