AngularJS和Laravel使用什么应用程序结构?

时间:2013-08-24 15:19:36

标签: php javascript web-applications angularjs laravel

我最近开始构建一个庞大的社交网络,而且我认为我的结构很好,但事实证明我构建了这个逻辑。

我将我的观点与AngularJS(糟糕的主意)混合在一起,跳过了刀片扩展,但由于我使用了大量的块和侧边栏,所以它变得很痛苦。

目前我只使用angular处理表单验证,但实际上我的所有网站页面都需要ajax,数据提取等。

我正在网上搜索,我看到角度视图存储在公共文件夹中,但由于我的所有页面都将使用angular,因此将所有视图存储在公共场所是个好主意,只需使用Laravel作为后端?

我知道这是一个愚蠢的问题,但我有点困惑。

任何帮助暗示赞赏。

3 个答案:

答案 0 :(得分:20)

有两种方法可以组合这些框架:

  1. 仅限客户端呈现

    这是大多数Web应用程序使用的更简单的方法。在这种情况下,您将使用Laravel作为API端点,它将返回JSON。 Angular可以通过其$http$resource服务查询此数据,并编译存储在公用文件夹中的模板。 Angular模板只是带有指令的HTML和一些{{var}}语句。这样Angular也可以完成所有路由。

  2. 服务器端和客户端呈现

    这是Laravel在服务器端进行路由和编译一些模板的难点。例如,您将使用Angular仅对网站上的某些交互使用jQuery。这种方法的好处是性能,因为用户第一次访问您的网站时将获得完整的HTML。缺点是您可能必须编写两次逻辑并且不能使用Angular的某些功能。

答案 1 :(得分:13)

要从大多数角度功能中获益,您应该编写单页应用程序。这意味着您将通过Web API与服务器通信,并且您将不会拥有任何 Laravel服务器端模板。

是的,您应该编写两个解耦的应用程序。一个客户端,使用Angular和一个服务器端公开Web API,最好是RESTful。

通过这种方式,您可以从客户端的JS / HTML / CSS切换到Flash或Silverlight或其他东西,从Laravel / PHP / MySQL切换到.NET或NodeJS或Meteor / MongoDB。

答案 2 :(得分:6)

Sergiu是正确的,但在某些情况下,Laravel仍然提供客户端模板无法实现的好处。这与SEO和WCAG(可访问性)有关。

AngularJS通过DOM操作呈现内容,因此搜索引擎无法确定在这些操作完成后显示的内容。屏幕阅读器也是如此。因此,必须通过服务器端视图构造来传递某些内容。这就是为什么Wordpress和Laravel拥有长期健康的未来。

在后端或SEO和WCAG不重要的情况下,随着越来越多的开发人员学习如何使用它们,将越来越多地使用数据绑定客户端模板,例如与AngularJS和Ember一起使用的模板。

就是否将AngularJS或Laravel用于视图构造而言,最好学习如何使用它们并在最合适的地方应用。