【发布时间】:2018-12-11 15:18:51
【问题描述】:
假设有一个用 Laravel 制作的 CMS。我们将为不同的客户提供相同的 CMS,在我们创建的每个版本上升级他们的 CMS,但有一个配置文件来定义每个客户可用的功能。整个后台(管理面板等)大部分是静态的,并且仅将 Vue 用于某些动态元素。该解决方案适合我们的后端需求。
但是,我们计划为每个客户端部署不同的最终用户前端。解耦这些听起来很简单(创建一个完全独立的前端项目并使用 API 端点来动态获取和渲染所有内容)但是如果我们要完全解耦前端和后端,我们将失去使用 Laravel Blade 渲染静态页面的能力,我们需要由于渲染速度、加载时间、搜索引擎优化等原因,该功能适用于某些页面。
主要问题是:如何在不失去使用 Laravel 和 Blade 渲染页面的能力的情况下,将每个客户端的前端与后端解耦,同时保持开发和测试的简单性?
我想到的一个解决方案是创建一个构建后步骤,我们将在该步骤中将特定于客户端的前端文件“合并”到 CMS 中,但这会使开发过程变得非常困难,甚至会全部完成几乎不可能开发和测试。
我想到的第二个解决方案是:
- 将所有内容保存在一个 Git 存储库中。
- 在其自己的分支上开发 CMS,并仅在该分支及其子分支上开发后端和后台的东西。
- 为不同的最终用户前端创建单独的分支(What's the best practice for putting multiple projects in a git repository? 可能是这里介绍的一些解决方案?)并仅在这些分支上开发最终用户前端。
- 在每个版本中将 CMS 分支合并到客户端分支中。
这个解决方案看起来是可行的,可以让我们使用 Laravel Mix 和服务器端渲染,但它很容易出现人为错误,而且一段时间后我们很难跟踪这些分支。我读过的其他潜在解决方案之一是使用 Git 子模块,但我只是很难理解它是如何工作的,而且它似乎不像在这个用例中那样灵活。
什么才是对我们来说最好的架构解决方案?
【问题讨论】:
标签: php laravel vue.js architecture frontend