# single-spa做了什么?
single-spa是一个顶层路由。当路由处于活动状态时,它讲下载并执行该路由的相关代码。
路由的代码被称为应用,每个代码都可以(可选)拥有自己的git仓库、CI进程,并且可以独立部署。这些应用即可以用相同框架实现,也可以用不同框架实现。
# 对性能有什么影响?
当按照推荐方式进行配置时,您的代码性能和包的大小将与已被拆分的单个应用程序基本相同。主要区别在于添加single-spa库(如果你选择使用SystemJS)。其他差别主要归结为一个(webpack/rollup等等)的代码包和浏览器内ES模块之间的差异。
# 我应该使用前端微服务吗?
如果你曾遇到过单一服务引发的问题,你就要考虑使用微服务了。
另外,如果你的结构是在Spotify类型的模型中设置的(例如:拥有完整堆栈功能的自治小队),那么前端的微服务将非常适合你的设置。
然而,如果你刚开始有一个小项目或一个小团队,建议暂时不实用微服务。当到你的项目扩展(如:结构扩展、功能扩展等)变得困难时,别担心,我们会在这里帮你迁移的。
# 我能使用多个框架吗?
是的。然而,这是你需要认证考虑的问题,因为他将在你的前端结构中分成了不兼容的专业领域(如:React专家可能在使用Angular应用时遇到问题),而且还会导致更多的代码被发送给用户。
然而,它非常适合从旧的或者不需要的库中迁移,这样就可以慢慢的从旧应用中删除代码,并在新库中替换成新的代码
这也是一种允许大型项目在不同库上进行实验,而无需要对他们做出强烈承诺的一种方式。
只要意识到它对你的用户即他们使用应用时的体验的影响。
# 每个single-spa应用可以拥有自己的git仓库吗?
当然!你甚至可以为他们提供自己的package.json,webpack配置文件,CI/CD进程,使用SystemJS在浏览器中将他们组合在一起。
# single-spa应用可以独立部署吗?
可以通过 ci 进行打包部署
使用推荐设置流程如下:
- 打包你的代码并上传至CDN。
- 更新开发环境的导入映射,指向新的URL。换句话说,你的导入映射由"styleguide": "cdn.com/styleguide/v1.js" 更新为 "styleguide": "cdn.com/styleguide/v2.js"
"如何更新导入映射"上的一些选项:
- 服务器通过导入映射渲染index.html。这不意味这你的所有的DOM元素都需要服务器渲染,但是只要使用
<script type="systemjs-importmap>元素, 可以提供更新数据库或服务器的本地文件的API。 - 将导入映射放在CDN上,并且使用 import-map-deployer (opens new window) 或类似于在CI过程中更新导入映射。这种方法对性能影响很小,如果你没有设置服务端渲染,则通常更容易设置。(你也可以preload (opens new window)导入映射文件来提升速度)。详情见 example travis.yml (opens new window)。其他的CI工具也可以工作。
阅读全文