与AngularJS和Laravel一起使用的应用程序结构是什么?

我最近开始建立一个大型社交网络,我认为我的结构很好,但事实证明,我建立这个逻辑很糟糕。

我混合了我的观点与AngularJS(坏主意),跳过刀片扩展,但由于我使用了很多块和侧边栏包含它成为屁股的痛苦。

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

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

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

任何帮助提示赞赏。


答案 1

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

  1. 仅客户端呈现

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

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

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


答案 2

要真正从 Angular 的大多数功能中受益,您应该编写一个单页应用程序。这意味着您将通过Web API与服务器进行通信,并且您不会有任何Laravel服务器端模板。

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

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