【发布时间】:2016-05-05 02:56:19
【问题描述】:
是否建议仅使用 Angular 作为前端并使用 CouchDB/Cloudant 或 MongoDB 作为数据库来构建应用程序,因为这些数据库可以直接提供 JSON 数据?如果我不使用 Java、Node 或 PHP 中的任何中间件,它会起作用吗?我想使用 Angular 和任何 nosql 数据库。
【问题讨论】:
标签: angularjs node.js ibm-cloud nosql
是否建议仅使用 Angular 作为前端并使用 CouchDB/Cloudant 或 MongoDB 作为数据库来构建应用程序,因为这些数据库可以直接提供 JSON 数据?如果我不使用 Java、Node 或 PHP 中的任何中间件,它会起作用吗?我想使用 Angular 和任何 nosql 数据库。
【问题讨论】:
标签: angularjs node.js ibm-cloud nosql
您可以在技术上仅使用 AngularJS 调用 DBaaS 的 REST API 来开发全栈应用程序,并且它会工作。但是,您不应该这样做,原因如下:
记住规则高内聚,松耦合。
一般来说,出于上述所有原因,您应该始终拥有某种服务器端逻辑层(如果您熟悉 M-V-C 框架,则为“控制器”)以及开发安全 、可重用和可维护代码。如果您需要在业务逻辑中实现更改,则转到 API 代码,如果您需要更改整个持久性机制,则必须编辑服务器-数据库交互,而不是 UI 等等……否则以后的每一次更改会影响整个应用程序。保持具有不同职责的独立模块是一种很好的做法(我们如何表示数据?需要执行什么?我们如何呈现结果?)。
【讨论】:
您始终可以在前端使用 Angular,在后端使用任何服务器端语言。关于直接连接 - 您可以直接查询数据库。每个数据库都有一个 REST API,使您能够直接从客户端与其通信。例如,MongoDB 有这个:https://docs.mongodb.org/ecosystem/tools/http-interfaces/ 希望这可以帮助。 如果是可取的?这是一个意见问题,需要辩论。
【讨论】:
我同意这很诱人,但令人沮丧。我确实在我自己的家庭自动化 Web UI(实际上是 angularjs)中实现了它,它使用 REST 和 JSON 直接与 RavenDB 对话。
非常适合原型设计,并且在有限的受控环境中也可以接受,但我最终切换到“中间人”API 层来处理一些无聊的细节,比如安全性(尽管在我的情况下,我还引入了 signalR 实时库,所以它是一个UX 优势,而不仅仅是技术优势)。
【讨论】: