alibaba / ice

🚀 ice.js: The Progressive App Framework Based On React(基于 React 的渐进式应用框架)
https://ice.work
MIT License
17.84k stars 2.09k forks source link

官方 Vue2 Demo 如何启用 HashRouter呢?有相关文档不? #5010

Closed niuyajing closed 2 years ago

niuyajing commented 2 years ago

我尝试改了主应用的mode为hash,也为微应用设置 hashType 为 true,但是不行

imsobear commented 2 years ago

多给点信息,代码怎么写的?怎么个不行法?

niuyajing commented 2 years ago

AppWorks - icestark基于vue的主应用模板和子应用模板 1.修改主应用的路由模式为hash,为微应用设置 hashType 为 true 2.子应用的同样改造成 HashRouter 路由模式 点击主应用的Login、About页面无变化,router.beforeEach拦截发现路由都经过2次跳转 比如:当前在Home页,点击About菜单,拦截信息显示路由先从Home跳到About、又从About跳到Home。 点击子应用相关菜单: 路由同样跳转2次,最终跳到Home, 此时页面空白

https://micro-frontends.ice.work/docs/faq#%E5%AE%98%E6%96%B9-demo-%E5%A6%82%E4%BD%95%E5%90%AF%E7%94%A8-hashrouter 有没有和这个类似的vue版本的文档

maoxiaoke commented 2 years ago

@niuyajing 提供下主应用的 icestark 的配置,从表现上来看,似乎并没有匹配上微应用,而导致直接跳转至 fallback 路由了

nnnnyyy commented 2 years ago

就是官方demo的配置,history 模式就是正常的没有问题。在官方demo的基础上只做了上述修改 registerMicroApps([ { name: "waiter", activePath: "/waiter", title: "小二平台", sandbox: true, hashType: true, entry: "http://192.168.50.228:8081", container, }, ]);

maoxiaoke commented 2 years ago

@niuyajing 这里的配置是正常~ 给我们提个 demo 仓库好吗,我们复现下

nnnnyyy commented 2 years ago

https://github.com/nnnnyyy/icestark-demo 感谢

maoxiaoke commented 2 years ago

https://github.com/nnnnyyy/icestark-demo/blob/master/main/src/App.vue#L51 应该是这一行代码影响的,在后面的版本中修复了这个问题,可以直接移除 onRoutechange 这个方法

另外,vue-router 设置为 hash 模式,好像不支持 base 的配置。则微应用的最外层的 routes 应该配置成:

import {  getBasename, isInIcestark } from '@ice/stark-app'

const routerConfig = [
  {
    path: isInIcestark() ? getBasename() : "/",
    component: BasicLayout,
    children: [
      { path: '/', component: Home, exact: true },
      { path: '/list', component: List },
      { path: '/detail', component: Detail },
      {
        path: '*',
        component: () => renderNotFound(),
      },
    ],
  },
];
maoxiaoke commented 2 years ago

Closing due to inactivity. Feel free to reopen or discuss further.