我应该将 AngularJS 与 PHP 框架混合使用吗? [关闭]
Posted
技术标签:
【中文标题】我应该将 AngularJS 与 PHP 框架混合使用吗? [关闭]【英文标题】:Should I mix AngularJS with a PHP framework? [closed] 【发布时间】:2013-03-15 11:24:00 【问题描述】:AngularJS 在交互式 html5 和模型绑定方面非常强大。另一方面,像 Yii 这样的 php 框架支持快速、结构良好、安全和强大的 Web 应用程序开发。这两种技术都为数据访问、迭代和页面布局提供了复杂的方法。
混合使用这两种方法(客户端和服务器端“页面设置”)是好还是坏?还是这与交互式、无缝的 HTML5 AJAX Web 应用程序的含义相悖?
我不是在谈论使用 PHP (See this question) 生成 JS - 我是在谈论生成将使用 AngularJS 的视图。
我也知道 AngularJS 页面应该(或可以)通过 REST 服务与服务器通信以获取数据 (See this question),而不是直接从例如 PHP 变量中检索数据。但对我来说,在 PHP 中为整个 Web 应用程序单独设计“框架”似乎更方便(例如构建主菜单或处理授权/会话等)
【问题讨论】:
好问题。我希望有一个为此类问题设计的 StackExchange 位置。我已经习惯了 PHP,并且有一个 cURL 项目来自己收集大量数据,并且相信基于库的 javascript 框架将非常适合我的项目。我的问题和你的一样,我想知道什么是好的做法(优点和缺点)以及你从原始项目(PHP)等中删除了哪些部分。我相信这些对话可以引起辩论,但我们如何才能达到两种语言的最佳融合,无需对话。 我有一些 AngularJS 项目正在转换回 PHP/Jquery。在让 Angular 与各种移动设备和浏览器一起工作时,我遇到了无穷无尽的问题。 Angular 很难进行 SEO,而 google 也不是它的朋友。我已经看到排名靠前的网站由于切换到 Angular 而在 SERPS 中消失了...... 【参考方案1】:似乎您可能更喜欢使用 PHP 进行开发,但让这阻碍了您充分利用 Web 应用程序的潜力。
确实可以让 PHP 渲染部分视图和整体视图,但我不建议这样做。
为了充分利用 HTML 和 javascript 的可能性来制作一个 Web 应用程序,即一个更像应用程序并严重依赖客户端渲染的网页,您应该考虑让客户端来承担管理状态的所有责任和介绍。这将更容易维护,并且对用户更友好。
我建议您以更加以 API 为中心的方法来进行更舒适的思考。与其让 PHP 输出一个预渲染的视图,并使用 angular 来进行 DOM 操作,不如考虑让 PHP 后端输出应该对 RESTFully 进行操作的数据,并让 Angular 呈现它。
使用 PHP 渲染视图:
/user/account
if($loggedIn)
echo "<p>Logged in as ".$user."</p>";
else
echo "Please log in.";
如何通过以 API 为中心的方法通过输出 JSON 来解决相同的问题:
api/auth/
authorized:true,
user:
username: 'Joe',
securityToken: 'secret'
在 Angular 中,您可以进行获取,并处理响应客户端。
$http.post("http://example.com/api/auth", )
.success(function(data)
$scope.isLoggedIn = data.authorized;
);
您提出的混合客户端和服务器端的方式可能适合维护不重要且您是单一作者的小型项目,但我更倾向于以 API 为中心的方式,因为这将更正确地分离conserns 并且会更容易维护。
【讨论】:
举个简单的例子。我自己正在寻找的不仅仅是每个人都做的超级简单的基本登录。当您在a wall of javascript
的意思吗?经过多年的 PHP 渲染,我是 Angular / JS API 世界的新手,所以这个讨论对我来说很有趣。
“而不是让 PHP 输出一个预渲染的视图,并使用 angular 来进行 DOM 操作......” - 让我给你介绍一个new-old concept。
这正是它应该的样子,来自后端的 Restful API 可以是任何语言,前端的 Angular 应用程序无论后端如何都可以工作。
我无法理解的是,为什么我应该加载一个带有占位符的通用页面,然后加载一些带有一个或多个异步请求的部分,以获取我在第一页加载时已经拥有的东西,比如用户/身份验证数据? 以上是关于我应该将 AngularJS 与 PHP 框架混合使用吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
我应该先学习 Angularjs 还是 Laravel? [关闭]
如何集成 bootstrap-3.0.1 和 AngularJS?