reactjs - Is SPA a monolith in the browser?
问题描述
When I publish my SPA, I am deploying the entire code base. Are we entering an age in which we can say that what today is fancy SPA would tomorrow be a monolith in the browser?
解决方案
这取决于您的 SPA 的规模和范围。您的 SPA 是否处理单个业务域/功能?那么也许它不是一个整体。想想微软是如何描述微服务的:
- 微服务体积小、独立且松耦合。一个小型开发团队可以编写和维护服务。
- 每个服务都是一个单独的代码库,可以由一个小型开发团队管理。
- 服务可以独立部署。团队无需重建和重新部署整个应用程序即可更新现有服务。
- 服务负责保存自己的数据或外部状态。这与传统模型不同,在传统模型中,单独的数据层处理数据持久性。
- 服务通过使用定义良好的 API 相互通信。每个服务的内部实现细节对其他服务是隐藏的。
- 服务不需要共享相同的技术堆栈、库或框架。
将这些点与您的 SPA 进行对比。如果您发现您的 SPA 捆绑了大量跨多个业务领域的功能,那么请查看如何将这些功能拆分出来。什么可以独立部署?
微前端一词于 2016 年底首次出现在 ThoughtWorks 技术雷达中。它将微服务的概念扩展到前端世界。当前的趋势是构建一个功能丰富且功能强大的浏览器应用程序,也就是单页应用程序,它位于微服务架构之上。随着时间的推移,通常由单独的团队开发的前端层会增长并且变得更加难以维护。这就是我们所说的前端单体。
功能可以缩小到一个可共享的组件吗?那么也许你会想考虑一个微前端模式。 https://martinfowler.com/articles/micro-frontends.html https://micro-frontends.org/
推荐阅读
- c++ - C++ - 输出语句的顺序不一致
- android - 打开文件失败(权限被拒绝)
- swift - 数据类型 String 和 [String] 有什么区别?
- python - Numpy 数组到天气图
- hadoop - 使用 shell 脚本的 Hadoop 流式传输:reducer 失败并出现错误:没有这样的文件或目录
- java - Java:如何获取文件名?
- appium - 根据屏幕存在执行操作 (Android JAVA)
- rust - 无法编译 stb_truetype 0.2.4,因为“切片模式语法是实验性的”
- laravel - 在 Laravel 中创建模型时使用受保护的 $table 变量
- json - 使用 Moshi 将平面 JSON 解析为嵌套对象结构