当前位置: 首页 > 面试题库 >

我应该将AngularJS与PHP框架混合使用吗?[关闭]

曹凯泽
2023-03-14
问题内容

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。

7年前关闭。

当涉及交互式HTML5和模型绑定时,AngularJS非常强大。另一方面,诸如Yii之类的PHP框架可实现快速,结构合理,安全且功能强大的Web应用程序开发。两种技术都提供了用于数据访问,迭代和页面布局的复杂方法。

混合这两种方法(客户端和服务器端的“页面设置”)是好是坏做法,还是违反了交互式,无缝HTML5 AJAX Web应用程序的含义?

我不是在谈论使用PHP生成JS,而是在谈论生成将使用AngularJS的视图。

我也知道AngularJS页面应该(或可以)通过REST服务与服务器通信以获取数据,而不是直接从例如PHP变量中获取数据。但是对我来说,用PHP分别为整个Web应用程序设计“框架”似乎更方便(例如,构建主菜单或处理授权/会话等)。


问题答案:

似乎您可能更愿意使用PHP进行开发,但是这会让您无法利用Web应用程序的全部潜能。

确实有可能让PHP呈现部分视图和整个视图,但是我不建议这样做。

为了充分利用HTML和javascript的可能性来制作Web应用程序,即一个行为更像应用程序并且严重依赖客户端呈现的网页,您应该考虑让客户端承担管理状态和表示的全部责任。这将更易于维护,并且将更加用户友好。

我建议您以一种更加以API为中心的方法更轻松地思考。您应该考虑让PHP后端输出应该在RESTFully上执行的数据,并让Angular呈现它,而不是让PHP输出一个预渲染的视图,而不是使用angular进行纯DOM操作。

使用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为中心的方式,因为这将更加正确地分离问题,并会易于维护。



 类似资料:
  • 问题内容: 我们的网站目前正在使用jQuery库,每月的访问量约为100万。我们希望包括以API为中心的方法,因此决定转向Javascript MVC并为此选择了angularJS。 现在我的问题是,我应该在Angular顶部使用jQuery,以便我需要重写最少的DOM操作代码,还是应该以Angular方式重写所有内容?我们使用的是jQuery插件,例如plupload,jQuery UI。等在网

  • 想改进这个问题吗?更新问题,以便通过编辑这篇文章用事实和引用来回答。 我的公司想开发一个移动应用程序。Web应用程序、本机应用程序还是混合应用程序?他们其实不知道。在这种情况下,他们要求我对移动开发的开源框架(跨平台框架btw)进行一些研究(我不是移动开发专家)。我做到了。现在,我大致了解了实际存在的情况,并选择了其中的8个。 现在,我想要的是你的个人反馈(赞成/反对/喜欢/不喜欢/如果你留下了另

  • 问题内容: 我使用a 将字符串转换为可以上传到SFTP服务器的文件(需要流)。事后结束这一点有什么意义吗?据我在源代码中看到的,它只是将字符串设置为… 我可以这样做,但是由于将close方法标记为throw,并且我只需要将其包装在try catch中,代码最终看起来比可能需要的可怕得多。 问题答案: 如果您知道要处理的是您将要扔掉的产品,那么我看不出有什么理由要关闭它。我无法想象关闭它后会保留对它

  • 问题内容: 我已经搜索过网络,到目前为止,我所看到的是您可以一起使用和含义: 要么 是有效的,但是当我使用此代码时,得到的是: 对于第一个,除了与相同。对于第二个。 问题是什么?我不能使用和在一起?还是正常?是我可以检查连接是否全部有效的方法吗?() 问题答案: 不,你不能使用和在一起。它们是独立的API,它们创建的资源彼此不兼容。 虽然有一个。

  • 哈希集由哈希映射支持。从它的JavaDoc: 这个类实现了Set接口,由哈希表(实际上是一个HashMap实例)支持 在查看源时,我们还可以看到它们之间的关系: 因此,一个<code>哈希集 使用而不是,不是更有效吗?进一步考虑的是,如果环境允许使用而不是,我们是否应该完全放弃,直接使用。 触发这些想法的基本问题是以下情况:我有一组具有以下属性的对象: 大型对象集合 如何有效地检查集装箱? 我想到

  • 我正在编写一些从第三方库扩展类的JUnit测试。超级类扩展了,所以根据定义,我的子类也扩展了。 在我的子类中,我用前缀编写测试方法,然后执行这些方法。 但是,出于许多原因,我们希望转移到JUnit4(其中一个原因是,我们不希望必须在测试方法前缀) 我尝试过使用JUnit4注释简单地编写新测试,但这些方法没有得到执行。 例如: 不扩展第三方测试类不是一个选项。(值得注意的是,Spring的又扩展了其