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

将这两种方法(客户端和服务器端的"页面设置")混合使用是好还是坏的做法?或者这与交互式、无缝的HTML5Ajax web应用程序的意义相反?

我不是说用PHP(See this question)生成JS——我是说生成一个使用AngularJS的视图.

我还知道AngularJS页面应该(或可以)通过REST服务与服务器通信以获取数据(See this question),而不是直接从PHP变量中检索数据.但在我看来,用PHP分别为整个web应用程序设计"框架"似乎更方便(例如,构建主菜单或处理授权/会话等)

推荐答案

似乎你更喜欢用PHP开发,因为这会阻碍你充分利用web应用程序的潜力.

确实可以让PHP呈现部分视图和整个视图,但我不推荐这样做.

为了充分利用HTML和JavaScript的可能性来制作Web应用程序,即,Web页面更像应用程序,并且很大程度上依赖于客户端渲染,您应该考虑让客户端维护管理状态和呈现的所有职责.这将更易于维护,并且更加用户友好.

我建议您以更加以API为中心的方式进行更轻松的思考.与其让PHP输出一个预渲染的视图,而只使用DOM操作的Angular ,你应该考虑PHP后端输出的数据应该是静态的,并且有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中,您可以执行get,并处理客户端的响应.

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

按照您提出的方式混合客户端和服务器端可能适用于维护不重要且您是单一作者的较小项目,但我更倾向于以API为中心的方式,因为这样会更正确地分离服务,并且更容易维护.

Php相关问答推荐

为什么注册SIGHUP的处理程序函数会阻止在PHP CLI中等待输入时点击X关闭Xterm窗口?""

在WooCommerce管理订单页面中显示区域名称

从WooCommerce订单状态更改更新用户自定义元数据

WordPress插件和JSON不是有效的响应错误

在PHP中,如何将介于0和1之间(包括0和1)的浮点概率转换为数组索引?

我的邮箱中的链接在我的URL中添加了一个

WooCommerce在购物车项目中复制产品而不增加产品数量

在WooCommerce Admin产品列表自定义列中显示来自元数据的统计数据

未定义的类型';PDF';在Laravel 8

显示 woocommerce 中所选变体的属性术语描述

服务器升级到新的mysql版本8.0.34后查询错误

如何在 Phpunit 的静态提供程序中创建测试双打?

当我激活插件时出现错误注意:未定义的偏移量:1

PHP 在数组中搜索值

在WooCommerce购物车和 checkout 页面中更改总计文本

Laravel的Storage::exists返回false,而file_exists返回true.

批量作业(job)提交错误无法处理所有文档,uris 似乎正确?

同一页面上多个组件的 Livewire 分页问题

PHP 中是否有 is_closure() 函数?

PHP 中的 curl 验证失败(openssh 连接正常)