AngularJS在交互式HTML5和模型绑定方面非常强大。另一方面,像Yii这样的PHP框架可以实现快速,结构良好,安全且功能强大的Web应用程序开发。这两种技术都为数据访问,迭代和页面布局提供了复杂的手段。
将这两种方法(客户端和服务器端“页面设置”)混合在一起是好还是坏的做法,还是反对交互式无缝HTML5 AJAX Web应用程序的含义?
我不是在谈论使用PHP生成JS(See this question) - 我在谈论生成一个将使用AngularJS的视图。
我也知道AngularJS页面应该(或可以)通过REST服务与服务器通信以获取数据(See this question),而不是直接从PHP变量中检索它。但对我来说,在PHP中单独设计整个Web应用程序的“框架”似乎更方便(例如,构建主菜单或处理授权/会话等)。
答案 0 :(得分:177)
看起来你可能对使用PHP进行开发感觉更舒服,这让你不再利用网络应用程序的全部潜力。
确实可以让PHP渲染局部视图和整个视图,但我不推荐它。
为了充分利用HTML和javascript创建Web应用程序的可能性,即一个更像应用程序并且在很大程度上依赖于客户端呈现的网页,您应该考虑让客户端负责管理状态和演示文稿。这将更容易维护,并且将更加用户友好。
我建议您以更加以API为中心的方法进行思考。不要让PHP输出预先渲染的视图,并且仅使用角度来进行DOM操作,您应该考虑让PHP后端输出应该在RESTFully上执行的数据,并让Angular呈现它。
使用PHP呈现视图:
/user/account
if($loggedIn)
{
echo "<p>Logged in as ".$user."</p>";
}
else
{
echo "Please log in.";
}
如何通过以这种方式输出JSON,以API为中心的方法解决同样的问题:
api/auth/
{
authorized:true,
user: {
username: 'Joe',
securityToken: 'secret'
}
}
在Angular中你可以做一个get,并处理响应客户端。
$http.post("http://example.com/api/auth", {})
.success(function(data) {
$scope.isLoggedIn = data.authorized;
});
要将客户端和服务器端混合在一起,您建议的方式可能适合维护不重要且您是单一作者的小型项目,但我更倾向于以API为中心的方式,因为这将更加正确地分离conserns并且更容易维护。