2013-08-24 29 views
30

我最近开始建立一个大型的社交网络,而且我认为我的结构很好,但事实证明我很糟糕地构建了这个逻辑。AngularJS和Laravel使用什么应用程序结构?

我混我的看法与AngularJS(坏主意),跳过刀片延长,但因为我使用了很多块和侧边栏包括它成为一个痛苦的对接。

目前,我只是处理表单验证有棱有角,但实际上我所有的网站页面都需要AJAX,数据拉动等

我绕过球网搜索,我看到角视图存储在公共文件夹,但因为我的所有页面都会使用角度,所以将所有视图存储在公共场所是一个好主意,并且只需使用Laravel作为后端?

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

任何帮助提示赞赏。

+1

我认为,当你使用ng-view来渲染partials,并且肯定会使用工厂哟拉数据,那个时间点$ http被考虑在内,并且当然你会使用一些验证从laravel拉取数据。我认为Angular本身是一个MV *框架,你是否需要laravel来定义另一条路线!检查http://stackoverflow.com/questions/15623967/should-i-mix-angularjs-with-a-php-framework –

回答

21

有两种方法将这些框架结合起来:

  1. 只有客户端呈现

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

  2. 服务器端和客户端渲染

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

+7

我建议为解决“编写逻辑两次”,您可以探索“存储库模式”,这意味着两个控制器(一个用于API,另一个用于服务器端模板),他们都可以使用存储库充当数据库层的中介。我将#2用作我自己网站的体系结构。有一个使用客户端呈现的内部“单页应用程序”(SPA)。回退是服务器端呈现,静态页面和一些用户管理区域。 –

+0

谢谢@Dominic –

+0

@Maximilian霍夫曼这些选项哪个是最好的时候,SEO是非常重要的考虑? – Digitlimit

12

要从大部分角度特征中获益,您应该编写一个单页面应用程序。这意味着您将通过Web API与服务器通信,并且您将不会有Laravel服务器端模板的任何。

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

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

+0

谢谢对于帮助:) –

7

Sergiu是正确的,但在某些情况下,Laravel仍然提供客户端模板无法实现的优势。这与SEO和WCAG(辅助功能)有关。

AngularJS使得通过DOM操作方式的内容,以便搜索引擎无法确定这些操作完成后所显示的内容。屏幕阅读器也是如此。出于这个原因,一些内容必须通过服务器端视图构造来传递。这就是为什么Wordpress和Laravel有长期和健康的未来。

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

就是否使用AngularJS或Laravel进行视图构造而言,最好学习如何使用两者并在最合适的地方应用。

+4

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

+0

三年后。我们现在将React(和其他人)与同构渲染作为一个好的解决方案。 –