Open wssgcg1213 opened 2 years ago
https://github.com/ice-lab/ice-next/issues/675 ice 3 默认不支持 MPA 模式,一些场景如果支持需要有文档说明
ice 3 为了统一运行时和业务技术方案,不再区分 SPA 和 MPA,通过 SPA 下的拆包逻辑来达到访问路由时仅加载当前路由资源的效果。 但由于框架运行时默认依赖了 react-router,这部分代码对于 MPA 场景是多余的,在一些代码体积敏感的场景下需要提供对应的解决方案。
目前已实现在 ice.config.mts 中配置 optimization.router,并且当前路由仅为一个的时候,将会移除 react-router 的依赖。
ice.config.mts
optimization.router
https://github.com/alibaba/ice/blob/dbcde911b6551f4aded4b165766ae88bc783e2b6/packages/ice/src/createService.ts#L152-L155
如果明确业务场景跳转不依赖 react-router 可以增加强制移除 react-router 选项
monorepo 方案更适用于极端场景:
TODO:具体 monorepo 方案推荐以最佳实践的方式输出
贴一下之前跑的数据
纯 react 应用 和 react + router 的应用,在 Reno3 下测试 25 次下来
所以是否有必要提供传统的 MPA ?
单独因为 react-router 引入的影响是不大的,主要是看一些复杂的 case 如何支持,比如 issue 中提到的极端场景
背景
ice 3 为了统一运行时和业务技术方案,不再区分 SPA 和 MPA,通过 SPA 下的拆包逻辑来达到访问路由时仅加载当前路由资源的效果。 但由于框架运行时默认依赖了 react-router,这部分代码对于 MPA 场景是多余的,在一些代码体积敏感的场景下需要提供对应的解决方案。
解决方案
强制移除 react-router 的依赖
目前已实现在
ice.config.mts
中配置optimization.router
,并且当前路由仅为一个的时候,将会移除 react-router 的依赖。https://github.com/alibaba/ice/blob/dbcde911b6551f4aded4b165766ae88bc783e2b6/packages/ice/src/createService.ts#L152-L155
如果明确业务场景跳转不依赖 react-router 可以增加强制移除 react-router 选项
monorepo 方案
monorepo 方案更适用于极端场景:
TODO:具体 monorepo 方案推荐以最佳实践的方式输出