【问题标题】:What application structure to use with AngularJS and Laravel?AngularJS 和 Laravel 使用什么应用程序结构?
【发布时间】:2013-08-27 12:32:40
【问题描述】:

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

我将我的观点与 AngularJS 混为一谈(坏主意),跳过了刀片扩展,但由于我使用了很多块和侧边栏,所以这让我很头疼。

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

我在网上搜索,发现 angular 视图存储在 public 文件夹中,但是由于我的所有页面都将使用 angular,所以将我的所有视图存储在 public 中是一个好主意,并且只使用 Laravel 作为后端?

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

感谢任何帮助提示。

【问题讨论】:

  • 我认为,当您使用 ng-view 渲染部分,并且肯定会使用工厂 yo pull 数据时,该时间点 $http 已被考虑在内,并且您肯定会使用一些验证来从 laravel 中提取数据。我认为作为 Angular 本身是一个 MV* 框架,你需要 laravel 来定义另一条路线吗!检查stackoverflow.com/questions/15623967/…

标签: php javascript web-applications angularjs laravel


【解决方案1】:

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

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

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

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

【讨论】:

  • 我更倾向于认为服务器端 JavaScript(如 NodeJS)是未来,您可以在其中为整个应用程序编写单个代码库,但在两种情况下运行它:普通用户的浏览器和爬虫的服务器。但是,是的,现在这是一个真正的问题。
  • 三年后。我们现在将具有同构渲染的 React(和其他)作为一个很好的解决方案。
【解决方案2】:

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

  1. 仅客户端渲染

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

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

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

【讨论】:

  • 我建议解决“两次编写逻辑”,您可以探索“存储库模式”,这意味着两个控制器(一个用于 API,另一个用于服务器端模板),它们都可以使用存储库充当数据库层的中介。我使用#2 作为我自己网站的架构。有一个使用客户端渲染的内部“单页应用程序”(SPA)。备用是服务器端呈现,用于静态页面和一些用户管理区域。
  • @Maximilian Hoffmann 在非常考虑 SEO 时,这些选项中哪一个是最好的?
  • @Digitlimit 没有人知道 Google 的搜索算法究竟是如何工作的,并且将来会发生变化。谷歌公开分享的是,性能已经成为网站得分的一个因素。由于首次访问时发送服务器端呈现的 HTML 更快,我推荐第二种方法以避免因性能不佳而受到惩罚。使用 React 服务器端渲染比使用 Angular 更容易。
【解决方案3】:

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

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

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

【讨论】:

    猜你喜欢
    • 2013-06-26
    • 2016-04-08
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    • 2013-02-07
    • 2016-09-06
    • 2015-08-12
    • 1970-01-01
    相关资源
    最近更新 更多