当前位置: 首页 > 面试题库 >

AngularJS客户端MVC模式?

于鹏
2023-03-14
问题内容

到现在为止,我主要是利用Struts 2SpringJQuery用于构建Web应用程序技术堆栈。关键是,提到的堆栈使用服务器端MVC模式。Web浏览器的主要作用仅限于请求/响应周期(+客户端验证)。数据检索,业务逻辑,接线和验证是服务器端的主要职责。

我对 AngularJS 框架有几个疑问,这些疑问是由我阅读过以下引号引起的:

AngularJS教程中

对于Angular应用,我们鼓励使用Model-View-Controller(MVC)设计模式来分离代码并分离关注点。

维基百科模型-视图-
控制器

模型-视图-控制器(MVC)是一种体系结构,用于将信息的表示形式与用户与之的交互分开。该模型由应用程序数据和 业务规则组成
,控制器控制输入,将其转换为模型或视图的命令

AngularJS 使用客户端MVC模式。因此,我想除了以某种方式将验证逻辑也包含到客户端之外,没有别的选择了吗?

编写健壮的AngularJS应用程序的最佳方法是什么? 客户端上的MVC和服务器端上的某种MC(模型,控制器)?

这是否意味着,MODEL和CONTROLLER以一种方式重复(客户端/服务器)?

我知道我的问题有点奇怪,但是我认为原因是我某种程度上习惯于传统的服务器端MVC模式。我确定有人已经完成了相同的过渡。


问题答案:

根本不是一个奇怪的问题-我一直试图将Angular出售给许多Java开发人员,他们问这个问题。我在学习的时候问过自己(顺便说一句,我还在学习)

如果您按照描述使用了“常规” java webapp并对其进行了角度化,则必须首先使用服务器并将其设为RESTful
API。删除JSP等。这实际上是IMO编写Angular应用程序的难点-正确设置REST API。对于我来说,决定进入服务器所需的逻辑的关键是
将其视为纯API,并暂时忘记它将具有前端

这个问题确实帮助了我-如果有人尝试保存给定的资源并且该资源没有有效的数据,则没有前端可以告诉他们-
他们直接攻击了API,因此API需要拒绝它。因此,后端负责深度验证。这也适用于您的业务逻辑。假设有人使用 刚刚 的API,它会变得清晰你的服务器需要做。

服务器还需要以(可能)json格式出售数据(我使用Spring MVC + Jackson),因此服务器负责将模型暴露给Angular,并与数据库进行通信。

那么,Angular端的MVC是什么?

  • 模型 :来自REST API的数据。如果API正在出售JSON,则这些对象将已经是1类javascript对象。
  • 视图 :HTML和需要操作DOM时的指令
  • 控制器 :(以及从控制器中提取的自定义服务。)
    • 查询REST API并将所需的View放在$ scope上
    • 提供指令的回调,以响应可能随后需要调用服务器的事件。
    • 验证:通常通过对指令的回调。 可能会有些重叠,你已经把服务器验证的 ,但你不希望你的用户等待服务器来验证一切-客户应该知道 的东西 有关验证给用户的即时反馈。
    • 业务逻辑:与验证几乎相同。

但是,为什么在客户端和服务器中重复逻辑?通常是因为您没有编写一个应用程序,而是在编写两个独立的东西:

  1. REST API,它需要健壮和可用而没有前端
  2. 一个GUI,需要立即向用户提供反馈,而不必等待服务器。

因此,简短的答案-通过忘记会有UI来正确使用REST API,Angular中的内容将更加清晰。



 类似资料:
  • 关于AngularJS框架,我有几个问题是从我读到的以下引用中得到启发的: 从AngularJS教程: 对于有角度的应用程序,我们鼓励使用Model-View-Controller(MVC)设计模式来解耦代码并分离关注点。 我知道我的问题有些奇怪,但我认为原因是,我对传统的服务器端MVC模式有些敏感。我确信有人已经做了同样的转变。

  • 问题内容: 有没有一种方法可以将angularJS用作SOAP客户端或开发ng SOAP客户端服务? 问题答案: 当然。您所需要做的就是在JavaScript上实现SOAP调用。

  • 我想在一些计算机之间建立点对点连接,这样用户就可以在没有外部服务器的情况下聊天和交换文件。我最初的想法如下: 我在服务器上制作了一个中央服务器插座,所有应用程序都可以连接到该插座。此ServerSocket跟踪已连接的套接字(客户端),并将新连接的客户端的IP和端口提供给所有其他客户端。每个客户端都会创建一个新的ServerSocket,所有客户端都可以连接到它。 换句话说:每个客户端都有一个Se

  • 问题内容: 我试图了解如何执行以下操作: 声明表单的可接受方式是什么。我的理解是,您只需用HTML声明表单,并添加ng-model指令,如下所示: 要发送到服务器的内容。我可以将item对象作为JSON发送到服务器,然后对其进行解释。然后,我可以对对象执行验证。如果失败,则抛出JSON错误,然后发回确切的信息?有接受的方式吗?如何以一种很好的方式将验证错误从服务器推送到客户端? 我确实需要一个示例

  • 我试图了解如何做以下事情: 声明表单的公认方式是什么。我的理解是您只需用超文本标记语言声明表单,然后添加ng-model指令,如下所示: 发送到服务器的内容。我可以将item对象作为JSON发送到服务器,并对其进行解释。然后我可以对对象执行验证。如果失败,我抛出一个JSON错误,并返回具体内容?有没有公认的方法?如何以一种好的方式将验证错误从服务器推送到客户端? 我真的需要一个例子,但是Angul