我应该将AngularJS与PHP框架混合吗?
AngularJS在交互式HTML5和模型绑定方面非常强大。 另一方面,像Yii这样的PHP框架能够实现快速,结构合理,安全和强大的Web应用程序开发。 这两种技术都为数据访问,迭代和页面布局提供了复杂的手段。
混合这两种方法(客户端和服务器端“页面设置”)是好的还是不好的做法,或者这与交互式,无缝HTML5 AJAX Web应用程序的意义相反?
我不是在谈论使用PHP生成JS( 请参阅此问题 ) – 我正在讨论如何生成将使用AngularJS的视图。
我也知道,一个AngularJS页面应该(或可以)通过REST服务与服务器通信来获取数据( 请参阅此问题 ),而不是直接从例如PHPvariables中检索它。 但是对我来说,在PHP中为整个Web应用程序devise“框架”似乎更为方便(例如,构build主菜单或处理授权/会话等)
看起来您可能更习惯于使用PHP进行开发,这让您无法充分利用Web应用程序的潜力。
确实有可能让PHP渲染部分和整个视图,但我不会推荐它。
为了充分利用HTML和JavaScript的可能性来创build一个Web应用程序,即更像应用程序的Web页面,并严重依赖于客户端呈现,您应该考虑让客户端负责pipe理状态和表示。 这将更容易维护,并将更加用户友好。
我build议你在更多以API为中心的方法中获得更舒适的思考。 而不是让PHP输出一个预渲染的视图,并使用angular来进行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并将更容易维护。