在 Git 中分离项目的不同部分

Posted

技术标签:

【中文标题】在 Git 中分离项目的不同部分【英文标题】:Separating different parts of the project in Git 【发布时间】:2021-03-26 21:45:28 【问题描述】:

如何在 Git 中有效地分离项目的不同部分?我有一个 Laravel Web 应用程序,其中包括管理面板 + API for Mobile 应用程序以提高性能。我认为将管理部分与 API 分开以禁用 API 中的服务提供者甚至在不同的服务器上运行管理面板(通过远程 mysql 连接到数据库)并专用服务器 API 是一个好主意。如何在不重复我对模型等公共部分所做的更改的情况下分离这些部分?我想将它们创建为 Git 存储库中的两个分支。有没有更好的方法来进行这种分离或更易于维护的整个优化?

更新:我面临的问题是响应时间。我将以下代码放入路由中,响应时间为 400-600ms。

Route::any('/test2', function() 

    return "test";
);

我在两台不同的服务器上对其进行了测试,我认为配置足够好(10GB ram - 4 CPU core 3.6Ghz)。顺便说一句,我现在每小时的请求不到 1k,很快我最多会看到 5k-20k。

【问题讨论】:

当您阅读答案时,创建包是最佳选择。我使用这个 repo 来构建样板。 github.com/Jeroen-G/laravel-packager。如果您使用 github 或类似的,请先阅读此信息:getcomposer.org/doc/05-repositories.md 【参考方案1】:

我认为将您的源代码分成模块就足够了。看看Laravel Module

【讨论】:

【参考方案2】:

我建议你作为框架的创建者(Taylor):打包并使用Composer。 在 Laravel 社区中,您可以使用许多软件包,例如 Horizo​​n、Nova、Telescope、Spatie/* 等。 如果您想添加它们,您只需添加一个 Composer 依赖项,它就可以开箱即用。 您可以对两个项目(如模型等)中的代码执行相同的操作。 每个包都有自己的 Git 存储库。 这是一种更Laravel 的方法,而不是分离到模块中(与 Symphony 世界相比)。 Laravel 的核心不是模块。

现在关于分离项目: 当我读到您的需求时,如果您在同一个项目上运行 API 和管理面板,我不确定您是否会遇到性能问题,除非您每小时有数百万次 http 调用。 我目前正在为客户端开发一个包含大量代码的项目,我们还有一个每小时有数千次调用的 api,一切都很好。我们还为内部后端运行 Nova。 您应该考虑到,当您遇到这些规模问题时,您可能还会遇到数据库问题,也可能是服务器问题(带宽、内存、成本等)。 100% 可扩展并非易事。 在我看来,当你面对它时,解决它。在开始时分离 Api/admin 面板可能会导致启动/维护项目的开销太大。

【讨论】:

所以我应该创建一个包,其中包含模型、库等公共部分,以及两个独立的 laravel 项目,这些项目的公共部分作为 compoer.json 中的依赖项我理解正确吗? 感谢您的信息。如果您能查看有问题的更新,我将不胜感激。我试图解决这个问题好几天,我认为这是因为许多服务提供商会自动加载 laravel,但现在我认为可能不是这样

以上是关于在 Git 中分离项目的不同部分的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio 中分离项目时遇到问题

如何在另一个项目中分离实体框架

如何判断你的头是不是在 git 中分离?

Swift:仅从表中的某些行/部分中分离

在 Laravel&Angular 项目中分离 AngularJS 控制器文件

iPhone Model View Controller 在 ViewController 中分离