为什么使用hash模式

  1. 官网上举例都是拿history模式,我就想看看hash模式
  2. history模式优在编译后缺点

    file协议访问会白屏,即打包完成后,双击页面会白屏(之后还证明qiankun的微应用,即使在hash模式下,子模块也不支持file模式访问依旧白屏)

    http协议访问刷新也同样白屏,如果想解决则部署到服务器还需要特殊配置

    因为我使用的是webapp(cordova技术),并没有部署到服务器,所有资源均走本地,所以没法使用history模式

参考文档

qiankun微前端路由模式

如何去做?

主应用

修改注册子应用的activeRule

改成hash模式,比如 讲'/workbench'改为'#/workbench'

import { registerMicroApps, start } from 'qiankun';
export const useQiankun = () => {
registerMicroApps([
{
name: 'workbenchApp',
entry: '//localhost:8080', //如果是编译后部署,则这里应该为编译后的子应用访问地址,比如'./micro-workbench-dist/index.html'
container: '#wk_container',
activeRule: '#/workbench', // 改成hash模式规则
}
]);
start(); // 启动 qiankun
}

子应用(workbench 工作台模块)

子应用就需要硬编码,有损改造了。

给原来的路由加上模式改为hash && 前缀 && 跳转的时候动用全局路由首位辅助处理跳转

注意不要妄图使用base偷懒,亲测无效

let prefix = '';
if(window.__POWERED_BY_QIANKUN__){
prefix = '/workbench' // /workbench为主应用的activeRule
} const routes: Array<RouteConfig> = [
{
path: prefix+'/',
name: 'home',
component: Home
},
{
path: prefix+'/coordinate',
name: 'coordinate',
component: Coordinate
}
]
const router = new VueRouter({
mode: 'hash',
routes
}); // 这里主要是适配子应用的单独访问和继承访问
if(window.__POWERED_BY_QIANKUN__){
router.beforeEach((to, from, next) => {
if(!to.path.includes('/workbench')){ // /workbench为主应用的activeRule
next({path: prefix+to.path})
}else{next()}
})
}

这里注意,尽量主应用和子应用的路由模式保持一直

效果预览

其中workbench是子应用

完整demo

qiankunjs中vue路由使用hash模式的更多相关文章

  1. Vue路由的hash模式与history模式的区别?

    1.首先router有两种模式:hash模式(默认).history模式(需配置mode: 'history') hash和history的区别?   hash                    ...

  2. Vue 的路由实现 Hash模式 和 History模式

    Hash 模式: Hash 模式的工作原理是onhashchange事件,Window对象可以监听这个事件... 可以通过改变路径的哈希值,来实现历史记录的保存,发生变化的hash 都会被浏览器给保存 ...

  3. 如何去除vue项目中的 # — vue路由的History模式

    前言 在创建的 router 对象中,如果不配置 mode,就会使用默认的 hash 模式,该模式下会将路径格式化为 #! 开头. 添加 mode: 'history' 之后将使用 HTML5 his ...

  4. Vue路由配置history模式

    我的博客: https://github.com/Daotin/fe-notes/issues vue需要node.js吗? 你可以用 script 标签的形式引入vue.min.js 这样的,不需要 ...

  5. 【前端路由】Vue-router 中hash模式和history模式的区别

    咱们今天说说VUE路由的hash模式与history模式的区别,这个也是面试常问的问题,不要小看这道题其实问到这里的时候那个面试官应该是个大牛,开发经验丰富,这个题其实就是考验你的开发经验是否属实. ...

  6. Vue路由实现之通过URL中的hash(#号)来实现不同页面之间的切换(图表展示、案例分析、附源码详解)

    前言 本篇随笔主要写了Vue框架中路由的基本概念.路由对象属性.vue-router插件的基本使用效果展示.案例分析.原理图解.附源码地址获取. 作为自己对Vue路由进行页面跳转效果知识的总结与笔记. ...

  7. vue 路由里面的 hash 和 history

    对于 Vue 这类渐进式前端开发框架,为了构建 SPA(单页面应用),需要引入前端路由系统,这也就是 Vue-Router 存在的意义.前端路由的核心,就在于 —— 改变视图的同时不会向后端发出请求. ...

  8. Vue-router 中hash模式和history模式的区别

    实际上存在三种模式: Hash: 使用URL的hash值来作为路由.支持所有浏览器. History: 以来HTML5 History API 和服务器配置.参考官网中HTML5 History模式 ...

  9. vue-router的hash模式与history模式的对比

    Vue-router 中hash模式和history模式的关系在vue的路由配置中有mode选项 最直观的区别就是在url中 hash 带了一个很丑的 # 而history是没有#的mode:&quo ...

  10. 「vue基础」一篇浅显易懂的 Vue 路由使用指南( Vue Router 下)

    大家好,在上一篇系列文章里,我们一起学习了路由的基本配置,如何创建路由和传参,本篇文章我们一起学习下 Navigation 导航和路由守卫的相关内容. Navigation 如果要改变当前路径,我们可 ...

随机推荐

  1. 字符串处理,push pop路径,组合命令,for

    字符串处理字符串截取.命令嵌套命令格式:%变量名:~ m,n%,其中,m表示开始位置(默认开头),n表示从m位置开始向后截取的字符个数(默认到结尾),若n为负数则表示向前截取个数,作用:将命令中的某段 ...

  2. Redis 集群实现分布式缓存的示例操作流程【Redis 系列之五】

    〇.前言 Redis 集群的核心优势在于高可用性.可扩展性和高性能,特别适合需要处理大规模数据和高并发请求的应用场景. 本文先介绍了什么是 Redis 集群,然后通过示例,以手动和自动两种方式搭建集群 ...

  3. 基于Redission实现分布式调度任务选主

    在Spring Cloud微服务架构中,基于Redisson实现分布式调度任务的选主和心跳监听,可以通过以下完整方案实现.该方案结合了Redisson的分布式锁和发布/订阅功能,确保高可靠性和实时性: ...

  4. eolinker脚本代码[Javascript]:通过判断返回码决定是否中止执行脚本

    场景描述: 请求返回码(code)不等于0时,整个脚本停止执行,并抛出信息 具体脚本: if (JSON.parse(result_api_1.response).Code != "0&qu ...

  5. 9.15CSP-S2022

    寄了,51分 单项选择 ok real不知道意思 ok 快排最慢可到达O(n2)O(n^2)O(n2) 数据有误不影响排序,删了就行 小端右,大端左,B 直接画即可(艹,算错了 ok ok 艹,组合计 ...

  6. 前端 Vue 后端返回流,前端通过流进行下载

    前端写法 //文件下载 async handleDownload(row) { try { // 假设文件是通过 GET 请求获取的,url 为文件资源的 API 地址 const response ...

  7. hadoop部署安装(二)hdfs

    2.1 解压Hadop包 2.2 配置hadoop-env.sh文件 [root@master ~]# cd /usr/local [root@master local]# tar xf hadoop ...

  8. 揭秘AI自动化框架Browser-use(四):Browser-use记忆模块技术解析

    一.从一次失败的景点采集说起 在 AI 自动化任务中,记忆模块是实现复杂任务处理的关键组件.Browser-use 项目通过引入记忆模块,解决了 LLM 在连续性任务中的无状态性问题,使代理能够维持上 ...

  9. [Ubuntu 20.04] 修复‘systemd-shutdown[1]: waiting for process: crond’需等待1分半钟的问题

    由于在2020-2021年期间下载过Linux版本的Free Download Manager(简称FDM,一款免费但不开源的跨平台下载工具),而该软件的官网被挂了木马,因此在此期间下载安装过FDM的 ...

  10. 【FAQ】HarmonyOS SDK 闭源开放能力 —Live View Kit (3)

    1.问题描述: 通过Push Kit创建实况窗之后,再更新实况窗失败,平台查询提示"实况窗端更新失败,通知未创建或已经过期". 解决方案: 通过Push Kit更新实况窗内容的过程 ...