使用 angular 等框架时服务器端脚本的文件结构

file structure of server-side script on server when using frameworks like angular

在学习 Angular 之前,我曾使用 CodeIgniter 构建我的 Web 项目。 CodeIgniter 的 MVC 结构使组织我的 php 文件变得容易。我不再有 php 脚本散落在各处。现在我已经学会了 Angular,似乎整个分散的脚本事情又回来了,因为 angular 是前端的东西,很多 http 请求(到 php)文件需要被制造 . 我现在通常有这样的文件

login.phpapi/accountsget-likes.phpapi/post-actions

它们只是做一件事的单个文件。 MVC 框架提供的结构更具可扩展性,几乎所有东西都通过 类 运行,有一个入口点和一个从 url 自动调用的控制器。这是不是错了。有什么我可以做得更好的吗? (注意现在不是 angular 的结尾,而是在服务器上组织我的脚本)。

我知道我的问题有点杂乱无章,我自己也能感觉到,但我不知道该怎么问。如果需要进行任何编辑,我很乐意进行。

我过去经常使用 PHP 所以我明白你的意思。有助于更好地组织事物的一件事是遵循 REST 指南。因此,您可能只有 api/actions,而不是 api/post-actions,也许还有 api/get-actions。当您发出 GET 请求时,它会执行 returns 操作。当POST且body是一个物体时,创建一个实体。如果是数组,则创建多个。 api/actions/:id 将 return 按 id 一个,PUT 将替换它,PATCH 将更新给定字段,DELETE 将删除,等等

我在大型 CakePHP MVC 应用程序(通常是遗留 non-SPA 应用程序正在转换为 Angular SPA)中使用的另一种模式,可能有大约一百个模型,是只创建一个通用的 REST 控制器。通常 REST 逻辑在不同模型之间是如此相同,以至于控制器很少甚至需要扩展,但它很容易做到,例如。您需要在一个模型的任何 REST 操作中使用自定义方法或自定义逻辑,而其他模型则不需要。

然后添加指向同一个控制器的多条路由,比如/actions/**foobarmodel/**。然后让控制器根据 URL 决定调用哪个模型,也许也应用一些条件身份验证规则。

您不需要回到旧的 php 方式。您的控制器可以只是 REST 控制器,其中 return 数据采用 JSON 格式。

例如,您可以有一个 Authentication 控制器,它处理所有关于身份验证的请求。

/api/authentication/login (POST)
/api/authentication/logout (GET)

因此,您可以在后端使用任何框架(Symfony、Laravel、Codeigniter)来帮助您保持代码井井有条