我是AngularJS的全新手。我想检查在我的新项目中使用它的可行性,这是一个Web应用程序。我已经在项目中使用Struts2 Spring和hibernate创建了一些页面。要转换以下这些是我理解的要点:
将服务器端API转换为返回JSON数据的REST样式
问题:我可以使用动态HTML加载AngularJS吗?我猜是。不知道怎么样?
目前我在服务器端使用velocity Templates来填充HTML模板中的数据并将其作为响应发送到AJAX中?如果我尝试使用AngularJS会有什么变化?
我有一个登陆页面,用于显示存储在DB中的一些图像和与之关联的数据。如何使用AngularJS显示它?
问题:当我点击网站网址(mysite.com)然后触发加载动态HTML的AJAX请求时,我是否应该加载只包含一个div标签的HTML模板?
如果我使用AndularJS,如果我选择将我的Data API实现为带有JSON的REST,它是否会完全无效使用Struts2?我想不是因为我仍然需要加载动态HTML视图,这些视图将在服务器上正确生成?
如果我在客户端上使用带有AngularJS的REST数据API,如何在服务器端维护HTTP会话状态?
我知道我可以在网上搜索和阅读上述问题的答案。我只需要在一个地方使用它们,这样我就可以进行讨论和其他问题。
答案 0 :(得分:4)
我可以回答一些你的问题:
1)将服务器端API转换为返回JSON数据的REST样式
是
问题:我可以使用动态HTML加载AngularJS。我猜 是。不知道怎么样? 目前我在服务器端使用velocity Templates来填充HTML模板中的数据并将其作为响应发送到AJAX中?什么会改变 如果我尝试使用AngularJS?
如果我理解正确,您希望在服务器端生成模板。在这种情况下 - 您只是不需要AngularJs - 您的视图预先填充在服务器上,浏览器接收静态内容(从客户端的角度来看)。如果你想使用AngularJs,那么你的模板将成为静态内容(从服务器端的角度来看),它们将通过REST服务以角度填充。
2)我有一个登陆页面,用于显示一些图像和数据 与它相关联,存储在DB中。我该如何使用它来显示它 AngularJS?
问题:我应该加载包含的HTML模板 当我点击网站URL(mysite.com)然后解雇AJAX时,只有一个div标签 请求加载动态HTML?
不完全是。对于基于jQuery的approuch,一个div就足够了(你会使用类似$ .ajax的东西,然后以命令式方式附加数据)。如果是Angular,您需要返回模板。它可能看起来像这样:
<ul ng-controller="MyCtrl">
<li ng-repeat="item in data">
<img ng-src="item.image.src">
<span>{{item.data.someTextProperty}}</span>
</li>
</ul>
一些AngularJs控制器将激活对REST服务的请求(可能通过你的AngularJs服务)并自动用结果填充模板
function MyCtrl($scope, $http) {
$http.get('/rest/data').success(function(result) {
$scope.data = result;
});
}
3)如果我使用AndularJS,它会完全无效使用Struts2 我选择使用JSON将我的Data API实现为REST?我想不像我 仍然需要加载将生成的动态HTML视图 服务器正确吗?
我认为它只会使Struts中使用View of MVC无效,因为AngularJS只会替换它。它也会让你使用像RESTful控制器这样的东西(不太适合Struts,但我觉得有类似的东西)
4)如果我使用REST,如何在服务器端维护HTTP会话状态 客户端上使用AngularJS的数据API?
这不是简短的答案,但基本上有以下模式。 AngualrJs提供了http拦截器,可以拦截请求和响应。如果拦截了代码401(未经授权)的响应,您可以向用户提供登录表单以恢复会话,并在完成此操作后重试上一个请求。此外,here您可能会发现此问题的另一个方面。
我希望我的回答对你有帮助。