开发 SPA 的最佳方法是什么?

What's the best approach to develop a SPA?

在开发单页应用程序时,我总是问自己,哪种方式才是设计项目的最佳方式。我应该分离客户端和后端吗?我的客户端应用程序应该与我的后端代码位于同一台服务器上吗?我应该为客户端和服务器投资多个托管计划吗?所以我想问,组织和开发单页应用程序的最佳方法是什么?

刚开始的时候,这是我的一个问题,很难在网上找到完整的答案。一般来说,虽然这会过于简单化,但以下是公司如何完成这个过程。

Monolith:后端和前端代码位于同一项目中的应用程序。

这意味着什么:代码库很容易维护,因为它就在那里。最初的复杂性较低,生产时间也少得多,因为它更容易获得 "out the door"。您没有复杂性,例如 "system" 的不同部分如何相互通信等。所有初创企业都从这里开始。

这里的缺点是,随着开发人员向其中塞入新功能和想法,代码库最终变得非常难以维护。此外,您的 API 未公开,因此它只能用于此应用程序(更多内容见下文)。

前端 & API: 前端代码和 API 分别位于不同代码库中的应用程序。 API 仅提供数据,通常采用 JSON 格式,前端代码使用并显示此数据。

这是什么意思:既然你已经分解了API和前端代码库,你可以使用API来提供任何需要它的前端应用程序的数据。例如,想想网络与移动设备。他们都可以使用相同的 API。对于更大的应用程序,这变得更易于维护,现在您可以围绕后端和前端流程构建团队。随着项目的发展,您现在也可以实现更好的扩展和效率。

这里的缺点是您现在有两个单独的代码库需要维护、维护、更新、确保同步等。

FEBE 和微服务: "system" 的所有部分都位于非常孤立的代码库、架构等中的应用程序。FEBE 是 "front-end, back-end" 而微服务是一种服务(可以是 API),它在业务逻辑中提供非常特定的功能。这个世界的前端可能需要消费几个微服务来完成它的目标。

这意味着什么: 这是成功的大公司最终登陆的地方,如果他们成功的话。再次,过于简单化,但所有主要公司都是这个领域的 运行 基础设施。这种架构更适合团队而不是编码或开发。拥有数百名工程师的公司可以给他们每个人一个系统来拥有和维护,使他们能够按照自己的节奏发布到生产等。

这里的缺点是系统现在被分解成数百个部分,没有人力就很难维护。同样,公司这样做的原因是因为它允许团队非常有效和独立地运作。

作为初创公司的所有公司通常都会沿着这个列表向下迁移,从单体开始,随着它们生存、扭亏为盈、盈利、雇用更多人等。

我给你的建议是: 从使用 Node.js (Express) 后端和 React.js 或 Angular 前端.

我这样说是因为 Node.js 是未来并且非常容易学习,React 或 Angular 是框架方面的良好起点。

当你进入第 2 阶段(前端和 API)时,坚持使用 Node.js 并可能在那个时候做出反应,或者如果是我,我会消耗我的 API 在 Handlebars 中的数据并完成它(根本不使用前端框架)。

希望这对您有所帮助。我回答是因为我知道几年前我在寻找答案时这对我来说是多么令人沮丧。