到现在为止,我主要是利用Struts 2,Spring,JQuery用于构建Web应用程序技术堆栈。关键是,提到的堆栈使用服务器端MVC模式。Web浏览器的主要作用仅限于请求/响应周期(+客户端验证)。数据检索,业务逻辑,接线和验证是服务器端的主要职责。
Struts 2
Spring
JQuery
MVC
我对 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是什么?
但是,为什么在客户端和服务器中重复逻辑?通常是因为您没有编写一个应用程序,而是在编写两个独立的东西:
因此,简短的答案-通过忘记会有UI来正确使用REST API,Angular中的内容将更加清晰。