我最近开始构建一个庞大的社交网络,而且我认为我的结构很好,但事实证明我构建了这个逻辑。
我将我的观点与AngularJS(糟糕的主意)混合在一起,跳过了刀片扩展,但由于我使用了大量的块和侧边栏,所以它变得很痛苦。
目前我只使用angular处理表单验证,但实际上我的所有网站页面都需要ajax,数据提取等。
我正在网上搜索,我看到角度视图存储在公共文件夹中,但由于我的所有页面都将使用angular,因此将所有视图存储在公共场所是个好主意,只需使用Laravel作为后端?
我知道这是一个愚蠢的问题,但我有点困惑。
任何帮助暗示赞赏。
答案 0 :(得分:20)
有两种方法可以组合这些框架:
仅限客户端呈现
这是大多数Web应用程序使用的更简单的方法。在这种情况下,您将使用Laravel作为API端点,它将返回JSON。 Angular可以通过其$http
或$resource
服务查询此数据,并编译存储在公用文件夹中的模板。 Angular模板只是带有指令的HTML和一些{{var}}语句。这样Angular也可以完成所有路由。
服务器端和客户端呈现
这是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用于视图构造而言,最好学习如何使用它们并在最合适的地方应用。