【发布时间】:2016-07-11 09:54:08
【问题描述】:
我正在开发一个带有 AngularJS 前端和 Laravel API 后端的应用程序。 Laravel 后端只是监听请求,处理它们并返回一个答案。前端和后端是不同的独立应用程序......到目前为止。我这样做是为了以后能够开发一个可以使用 API 的移动应用程序。我也使用 JWT 对用户进行身份验证,所以我根本不使用 Laravel 的会话。在这一点上,我只需要一个 webapp。我构建了一个使用 angular ui-router 的 webapp。
到目前为止一切顺利。前端和后端运行良好。然而,一些前端视图将是公开的并且需要共享按钮,它们还需要能够被 Google 索引。
我读过有一些替代方案。
- Make some hack 使用 apache mod_rewrite 为人们提供 Angular 应用程序,并由后端直接提供静态版本。我认为使用 Laravel 不会很困难。
- 使用 Prerender.js。就我而言,这与选项 1 所做的工作几乎相同,但方式更完整。
但是我正在考虑使用第三种选择。鉴于我现在只需要 webapp 并且 API 正在工作,我正在考虑使用 Laravel 的内置 webapp 功能。我可以使用 Angular 的控制器、指令和工厂,让 Laravel 处理 webapp 路由。
这样做的一个优点是我可以使用 Blade 呈现元标记(这完全解决了 SEO 问题)并使用 angular 和 API 提供其余内容。
你们中的任何人都可以看到这种解决方案的缺点,或者您知道使用 Angular 和 Laravel 实现 SEO 目的的更好方法吗?
【问题讨论】:
-
不确定我是否理解正确,但如果我理解了,您计划从 ui-route (AngularJS) 转移到需要 GET 的 Laravel Route。使用 ui-route,您可以构建 SPA 并从互联网没有其他选择的时候删除持续的 GET 请求。我只是指出这一点是为了让您充分了解,也许您不介意,但如果是我,我会的。
-
嗨@MarcoAurélioDeleu。我一直在试验和学习 ui-route。我发现它非常有用(而且不那么容易学习)。我知道那会是个问题。但是,我试图判断这是否是一个很好的权衡。那不会是一个 SPA,但我会在我的观点上拥有 Blade 和 Laravel 的一些力量。我仍然会在每个视图上使用 angular 来完成 angular 擅长的所有其他工作(ajax、dom 访问等),但将路由留给 Laravel。 webapp 仍然会调用 API,但 SEO 和路由会更容易处理?
-
我理解你的担忧,对我来说,Laravel 路由会扼杀 SPA 概念这一事实足以让我放弃它。但这完全是基于意见的答案,除非有人知道如何充分利用每种方法,否则您很难从中获得技术性答案。
-
@Jonathan 我知道已经很晚了,但你有想过这个吗?我在这里也有同样的情况。
-
@Jonathan 感谢您展示双重集成的可能解决方案 :)