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

30 javascript php web-applications laravel angularjs

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

我将我的观点与AngularJS(坏主意)混合在一起,跳过了刀片扩展,但由于我使用了大量的块和侧边栏,所以它变成了一个痛苦的屁股.

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

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

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

任何帮助暗示赞赏.

Max*_*ann 20

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

  1. 仅客户端呈现

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

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

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

  • 我建议你解决"写两次逻辑"你可以探索"存储库模式",这意味着两个控制器(一个用于API,另一个用于服务器端模板),它们都可以使用存储库作为数据库的中介层.我使用#2作为我自己网站的架构.有一个内部"单页面应用程序"(SPA),它使用客户端呈现.回退是服务器端呈现,用于静态页面和一些用户管理区域. (7认同)

Ser*_*hiv 13

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

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

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


Pet*_*nan 6

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

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

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

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

  • 我更倾向于认为服务器端JavaScript(如NodeJS)是未来,您可以为整个应用程序编写单个代码库,但在两个上下文中运行它:常规用户的浏览器和爬虫的服务器.但是,是的,现在这是一个真正的问题. (4认同)