qiankunjs中vue路由使用hash模式
为什么使用hash模式
- 官网上举例都是拿history模式,我就想看看hash模式
- history模式优在编译后缺点
file协议访问会白屏,即打包完成后,双击页面会白屏(之后还证明qiankun的微应用,即使在hash模式下,子模块也不支持file模式访问依旧白屏)
http协议访问刷新也同样白屏,如果想解决则部署到服务器还需要特殊配置
因为我使用的是webapp(cordova技术),并没有部署到服务器,所有资源均走本地,所以没法使用history模式
参考文档
如何去做?
主应用
修改注册子应用的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模式的更多相关文章
- Vue路由的hash模式与history模式的区别?
1.首先router有两种模式:hash模式(默认).history模式(需配置mode: 'history') hash和history的区别? hash ...
- Vue 的路由实现 Hash模式 和 History模式
Hash 模式: Hash 模式的工作原理是onhashchange事件,Window对象可以监听这个事件... 可以通过改变路径的哈希值,来实现历史记录的保存,发生变化的hash 都会被浏览器给保存 ...
- 如何去除vue项目中的 # — vue路由的History模式
前言 在创建的 router 对象中,如果不配置 mode,就会使用默认的 hash 模式,该模式下会将路径格式化为 #! 开头. 添加 mode: 'history' 之后将使用 HTML5 his ...
- Vue路由配置history模式
我的博客: https://github.com/Daotin/fe-notes/issues vue需要node.js吗? 你可以用 script 标签的形式引入vue.min.js 这样的,不需要 ...
- 【前端路由】Vue-router 中hash模式和history模式的区别
咱们今天说说VUE路由的hash模式与history模式的区别,这个也是面试常问的问题,不要小看这道题其实问到这里的时候那个面试官应该是个大牛,开发经验丰富,这个题其实就是考验你的开发经验是否属实. ...
- Vue路由实现之通过URL中的hash(#号)来实现不同页面之间的切换(图表展示、案例分析、附源码详解)
前言 本篇随笔主要写了Vue框架中路由的基本概念.路由对象属性.vue-router插件的基本使用效果展示.案例分析.原理图解.附源码地址获取. 作为自己对Vue路由进行页面跳转效果知识的总结与笔记. ...
- vue 路由里面的 hash 和 history
对于 Vue 这类渐进式前端开发框架,为了构建 SPA(单页面应用),需要引入前端路由系统,这也就是 Vue-Router 存在的意义.前端路由的核心,就在于 —— 改变视图的同时不会向后端发出请求. ...
- Vue-router 中hash模式和history模式的区别
实际上存在三种模式: Hash: 使用URL的hash值来作为路由.支持所有浏览器. History: 以来HTML5 History API 和服务器配置.参考官网中HTML5 History模式 ...
- vue-router的hash模式与history模式的对比
Vue-router 中hash模式和history模式的关系在vue的路由配置中有mode选项 最直观的区别就是在url中 hash 带了一个很丑的 # 而history是没有#的mode:&quo ...
- 「vue基础」一篇浅显易懂的 Vue 路由使用指南( Vue Router 下)
大家好,在上一篇系列文章里,我们一起学习了路由的基本配置,如何创建路由和传参,本篇文章我们一起学习下 Navigation 导航和路由守卫的相关内容. Navigation 如果要改变当前路径,我们可 ...
随机推荐
- 字符串处理,push pop路径,组合命令,for
字符串处理字符串截取.命令嵌套命令格式:%变量名:~ m,n%,其中,m表示开始位置(默认开头),n表示从m位置开始向后截取的字符个数(默认到结尾),若n为负数则表示向前截取个数,作用:将命令中的某段 ...
- Redis 集群实现分布式缓存的示例操作流程【Redis 系列之五】
〇.前言 Redis 集群的核心优势在于高可用性.可扩展性和高性能,特别适合需要处理大规模数据和高并发请求的应用场景. 本文先介绍了什么是 Redis 集群,然后通过示例,以手动和自动两种方式搭建集群 ...
- 基于Redission实现分布式调度任务选主
在Spring Cloud微服务架构中,基于Redisson实现分布式调度任务的选主和心跳监听,可以通过以下完整方案实现.该方案结合了Redisson的分布式锁和发布/订阅功能,确保高可靠性和实时性: ...
- eolinker脚本代码[Javascript]:通过判断返回码决定是否中止执行脚本
场景描述: 请求返回码(code)不等于0时,整个脚本停止执行,并抛出信息 具体脚本: if (JSON.parse(result_api_1.response).Code != "0&qu ...
- 9.15CSP-S2022
寄了,51分 单项选择 ok real不知道意思 ok 快排最慢可到达O(n2)O(n^2)O(n2) 数据有误不影响排序,删了就行 小端右,大端左,B 直接画即可(艹,算错了 ok ok 艹,组合计 ...
- 前端 Vue 后端返回流,前端通过流进行下载
前端写法 //文件下载 async handleDownload(row) { try { // 假设文件是通过 GET 请求获取的,url 为文件资源的 API 地址 const response ...
- hadoop部署安装(二)hdfs
2.1 解压Hadop包 2.2 配置hadoop-env.sh文件 [root@master ~]# cd /usr/local [root@master local]# tar xf hadoop ...
- 揭秘AI自动化框架Browser-use(四):Browser-use记忆模块技术解析
一.从一次失败的景点采集说起 在 AI 自动化任务中,记忆模块是实现复杂任务处理的关键组件.Browser-use 项目通过引入记忆模块,解决了 LLM 在连续性任务中的无状态性问题,使代理能够维持上 ...
- [Ubuntu 20.04] 修复‘systemd-shutdown[1]: waiting for process: crond’需等待1分半钟的问题
由于在2020-2021年期间下载过Linux版本的Free Download Manager(简称FDM,一款免费但不开源的跨平台下载工具),而该软件的官网被挂了木马,因此在此期间下载安装过FDM的 ...
- 【FAQ】HarmonyOS SDK 闭源开放能力 —Live View Kit (3)
1.问题描述: 通过Push Kit创建实况窗之后,再更新实况窗失败,平台查询提示"实况窗端更新失败,通知未创建或已经过期". 解决方案: 通过Push Kit更新实况窗内容的过程 ...