我应该将AngularJS与PHP框架混合使用吗?

Dan*_*ani 158 php web-applications angularjs

AngularJS在交互式HTML5和模型绑定方面非常强大.另一方面,像Yii这样的PHP框架可以实现快速,结构良好,安全且功能强大的Web应用程序开发.这两种技术都为数据访问,迭代和页面布局提供了复杂的手段.

将这两种方法(客户端和服务器端"页面设置")混合在一起是好还是坏的做法,还是与交互式无缝HTML5 AJAX Web应用程序的含义相反?

我不是在谈论使用PHP生成JS(请参阅此问题) - 我在谈论生成一个将使用AngularJS的视图.

我也知道AngularJS页面应该(或可以)通过REST服务与服务器通信以获取数据(请参阅此问题),而不是直接从PHP变量中检索它.但对我来说,似乎更方便地设计了单独的PHP整个Web应用程序的"框架"(例如建立主菜单或者处理授权/会话等)

Ken*_*nne 178

看起来你可能更习惯用PHP开发,这让你不再利用Web应用程序的全部潜力.

确实可以让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.";
}
Run Code Online (Sandbox Code Playgroud)

如何通过输出类似于此的JSON以API为中心的方法解决同样的问题:

api/auth/

{
  authorized:true,
  user: {
      username: 'Joe', 
      securityToken: 'secret'
  }
}
Run Code Online (Sandbox Code Playgroud)

在Angular中你可以做一个get,并处理响应客户端.

$http.post("http://example.com/api/auth", {})
.success(function(data) {
    $scope.isLoggedIn = data.authorized;
});
Run Code Online (Sandbox Code Playgroud)

要将客户端和服务器端混合在一起,你建议的方式可能适用于维护不重要且你是单一作者的小型项目,但我更倾向于以API为中心的方式,因为这将更加正确地分离内容和意志更容易维护.

  • 简单的例子.我自己一直在寻找的不仅仅是每个人都做的超级基本登录.当PHP/HTML和变量<td> $ name </ td>超过<td> {{name}} </ td>然后'app.run(function($ rootScope){$ rootScope.name = "Ari Lerner";});' 我自己正试图看到/发现尝试或试图让PHP制作'DYNAMIC'Angular Pages的好处.只是没有看到它.让客户端等待加载每个单独的元素并填充/更改模板.只是不热衷于PHP生成像这样的javascript墙的想法,并且很容易看到 (2认同)
  • @ShawnRebelo你能用'javascript墙'澄清一下你的意思吗?经过多年的PHP渲染,我是Angular/JS API世界的新手,所以这个讨论对我很有意思. (2认同)
  • 我无法理解的是为什么我应该使用占位符加载一个通用页面,然后加载一些带有一个或多个异步请求的部分来获取我在第一页加载时已经拥有的内容,如user/auth数据? (2认同)