位置: IT常识 - 正文

uni-simple-router(uni-simple-router 跳转无效)

编辑:rootadmin
uni-simple-router 专为uniapp打造的路由器,和uniapp深度集成 通配小程序、App和H5端 H5能完全使用vue-router开发 模块化、查询、通配符、路由参数 使 uni-app实现嵌套路由(仅H5端完全使用vue-router) uniapp用到了很多vue的api, ... 目录uni-simple-router一、快速上手

扩一:webpack插件之DefinePlugin扩二:uni-read-pages 如何获取pages.json中的路由二、H5模式

2.1 路由配置2.2 完全使用vue-router开发 (H5端)2.3 H5 路由传参2.4 H5端路由捕获所有路由或404路由2.5 路由懒加载三、小程序模式四、路由跳转

4.1 组件跳转4.2 编程式导航五、跨平台模式

5.1 提前享用生命周期5.2 导航守卫六、路由守卫-模块化

扩三、require.context用法uni-simple-router专为uniapp打造的路由器,和uniapp深度集成通配小程序、App和H5端H5能完全使用vue-router开发模块化、查询、通配符、路由参数使 uni-app实现嵌套路由(仅H5端完全使用vue-router)uniapp用到了很多vue的api,但在路由管理的功能相对于vue-router还是比较欠缺的,比如全局导航守卫

推荐整理分享uni-simple-router(uni-simple-router 跳转无效),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:uni-simple-router 小程序,uni-simple-router vue3,uni-simple-router vue3,uni-simple-router 不支持vue3,uni-simple-router 不支持vue3,uni-simple-router 小程序,uni-simple-router 回参,uni-simple-router vue3,内容如对您有帮助,希望把文章链接给更多的朋友!

uni-simple-router(uni-simple-router 跳转无效)

官方文档:https://hhyang.cn/v2/start/quickstart.html

一、快速上手// 针对uniapp HBuilder创建的项目,非cli构建// 1⃣ NPM 安装npm install uni-simple-router// 2⃣ 初始化npm install uni-read-pages // 配合vue.config.js自动读取pages.json作为路由表的方式,源码例如下:扩二// 配置vue.config.jsconst TransformPages = require('uni-read-pages')const tfPages = new TransformPages()module.exports = {configureWebpack: {plugins: [ new tfPages.webpack.DefinePlugin({ // 1⃣ 配置全局变量 // ROUTES: JSON.stringify(tfPages.routes) // 2⃣ includes 可自定义,解析pages.json路由配字段的配置, 默认 ['path', 'name', 'aliasPath'] ROUTES: tfPages.webpack.DefinePlugin.runtimeValue(()=>{ const tf = new TransformPages({ includes: ['path', 'name', 'aliasPath'] }) return JSON.stringify(tfPages.routes) },true) })]}}// /Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/webpack 我的webpack包路径,在软件contents包文件里软件自带的webpack扩一:webpack插件之DefinePlugin允许创建一个 在编译时可以配置的全局变量场景:区分不同开发模式处理// 1⃣ 用法:每个传进DefinePlugin的键值都是一个标志或者多个用.连接起来的标识符new webpack.DefinePlugin({ PRODUCTION: JSON.stringify(true), BROWSER_SUPPRTS_HTML5: true, VERSION: JSON.stringify('abcde'), TWO: '1+1', 'typeof window': JSON.stringify('object')})// 使用方式console.log('Running App version', VERSION)if(!BROWSER_SUPPRTS_HTML5) require("html5shiv")// 2⃣ 功能标记 来作为一个flag标识启用和禁用构建中的功能new webpack.DefinePlugin({ 'SHOW_PRESSION': JOSN.string(true)})// 3⃣ 服务:可以配置不同环境下的urlnew webpack.DefinePlugin({ 'DEV_URL': JSON.stringify(url_dev), 'PRO_URL': JSON.stringify(url_pro)})扩二:uni-read-pages 如何获取pages.json中的路由// 依赖的源码 - 通过node的path模块获取pages.json文件中的任何信息 (部分是个人注释)const path = require('path')const CONFIG = { includes: ['path', 'aliasPath', 'name'] } // 默认获取路由参数属性// process.cwd() 返回Node.js进程的当前工作目录// path.resolve(url1, 'abc') => url1/abcconst rootPath = path.resolve(process.cwd(), 'node_modules'); // 获取根路径/** 解析绝对路径 * @param {Object} dir */function resolvePath(dir) {return path.resolve(rootPath, dir);}// 类class TransformPages {constructor(config) { // 组合 自定义获取配置属性config = { ...CONFIG, ...config }; this.CONFIG = config; // ↓本机文件路径(HBuilderX包文件里自带的webpack模块路径) /Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli/node_modules/webpackthis.webpack = require(resolvePath('webpack'));this.uniPagesJSON = require(resolvePath('@dcloudio/uni-cli-shared/lib/pages.js')); // TODO: 根据CONFIG解析pages.json中的路由信息 和 小程序 分包下的路由this.routes = this.getPagesRoutes().concat(this.getNotMpRoutes());} // 获取所有pages.json下的内容 返回jsonget pagesJson() {return this.uniPagesJSON.getPagesJson();} // 通过读取pages.json文件 生成直接可用的routesgetPagesRoutes(pages = this.pagesJson.pages, rootPath = null) {const routes = [];for (let i = 0; i < pages.length; i++) {const item = pages[i];const route = {};for (let j = 0; j < this.CONFIG.includes.length; j++) {const key = this.CONFIG.includes[j];let value = item[key];if (key === 'path') {value = rootPath ? `/${rootPath}/${value}` : `/${value}`}if (key === 'aliasPath' && i == 0 && rootPath == null) {route[key] = route[key] || '/'} else if (value !== undefined) {route[key] = value;}}routes.push(route);}return routes;}// 解析小程序分包路径getNotMpRoutes() {const { subPackages } = this.pagesJson;let routes = [];if (subPackages == null || subPackages.length == 0) {return [];}for (let i = 0; i < subPackages.length; i++) {const subPages = subPackages[i].pages;const root = subPackages[i].root;const subRoutes = this.getPagesRoutes(subPages, root);routes = routes.concat(subRoutes)}return routes}/** * 单条page对象解析 * @param {Object} pageCallback * @param {Object} subPageCallback */parsePages(pageCallback, subPageCallback) {this.uniPagesJSON.parsePages(this.pagesJson, pageCallback, subPageCallback)}}module.exports = TransformPages二、H5模式2.1 路由配置import {RouterMount,createRouter} from 'uni-simple-router';const router = createRouter({ // 路由配置 routes: [ { path: '/pages/index/index', // 必须和pages.json中相同 extra: { pageStyle: { color: '#f00' }// 及其它自定义参数 } } ]})// 组件中可以通过 this.$Route 查看路由元信息2.2 完全使用vue-router开发 (H5端)嵌套路由时,若使用name方式跳转,仅支持 this.$router.push({ name: children1 })// 使用 vue-router开发将会失去uniapp的生命周期const router = createRouter({ h5: { vueRouterDev: true, // 完全使用vue-router开发 默认是false }, // 路由配置 routes: [ { path: '/', name: 'home', component: () => import('@/common/router/home.vue'), // 嵌套路由(仅H5端),小程序端会重新页面打开 children: [ { path: 'home/children1', name: 'children1', component: () => import('@/common/router/children1.vue') }, { path: 'home/children2', name: 'children2', component: () => import('@/common/router/children2.vue') } ] } ]})2.3 H5 路由传参// 除vue-router外,美化url可以在基础配置时,定义aliasPath变量,设置路由别名(浏览器地址栏展示名称)// 别名的设置,如果设置了别名,通过push路径的方式,必须使用aliasPath的路径才能生效const router = createRouter({ routes:[{ name:'router1', //为了兼容其他端,此时的path不能少,必须和 pages.json中的页面路径匹配 path: "/pages/tabbar/tabbar-1/tabbar-1", aliasPath: '/tabbar-1', },]});// uni-simple-router路由跳转// aliasPath命名的路由 => name传递参数需 paramsthis.$Router.push({ name: 'detail', params: { id: 1 } })// 带查询参数,变成 /home/id=1 => path 对应query,params失效this.$Router.push({ path: '/pages/index/detail', query: { id: 1 }})2.4 H5端路由捕获所有路由或404路由path:'*' // 通常用于客户端404错误,如果是history模式,需要正确配置服务器path: '/detail-*'// 路由的优先级根据 定义的先后2.5 路由懒加载

打包构建应用时,Javascript包会变得非常大,影响页面加载,把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件。

const Foo = () => import('./Foo.vue') // 把组件按组分块 使用 命名 chunk const Foo = () => import(/*webpackChunkName:"group-foo"*/ './Foo.vue') const Bar = () => import(/*webpackChunkName:"group-foo"*/ './Bar.vue')三、小程序模式

注:小程序系列无法拦截原生tabbar及原生导航返回,如需拦截使用自定义tabbar、header

通过api进行切换时,像uni.switchTab()和this.$Router.pushTab()方法会触发拦截的;仅底部原生tabbar进行切换时不触发拦截

强制触发守卫:forceGuardEach(replaceAll, false) 每次调用api都会重新按流程触发已经

本文链接地址:https://www.jiuchutong.com/zhishi/310402.html 转载请保留说明!

上一篇:java中hashCode()是什么(java hash())

下一篇:python for循环遍历位置的查找(python for循环遍历)

  • vivo手机联系人怎么导入sim卡(vivo手机联系人不显示怎么回事)

    vivo手机联系人怎么导入sim卡(vivo手机联系人不显示怎么回事)

  • 打qq电话放歌对方能听见吗(打qq电话的时候放歌对方听得到怎么办)

    打qq电话放歌对方能听见吗(打qq电话的时候放歌对方听得到怎么办)

  • 110pvc管内径多大(110pvc管是内径还是外径)

    110pvc管内径多大(110pvc管是内径还是外径)

  • 指纹锁电池耗电快是什么原因(指纹锁电池耗电量太快什么问题)

    指纹锁电池耗电快是什么原因(指纹锁电池耗电量太快什么问题)

  • 微程序控制器中,机器指令与微指令的关系(微程序控制器中,以下什么顺序控制方式)

    微程序控制器中,机器指令与微指令的关系(微程序控制器中,以下什么顺序控制方式)

  • 私密账号什么意思(私密账号显示什么)

    私密账号什么意思(私密账号显示什么)

  • 手机文档里txt能删除吗

    手机文档里txt能删除吗

  • 华为手机别人打电话提示关机(华为手机别人打电话正在通话中)

    华为手机别人打电话提示关机(华为手机别人打电话正在通话中)

  • 金士顿内存条怎么看大小(金士顿内存条怎么看生产日期)

    金士顿内存条怎么看大小(金士顿内存条怎么看生产日期)

  • 小爱音箱可以车上用吗(小爱音箱车载电源线)

    小爱音箱可以车上用吗(小爱音箱车载电源线)

  • md511ch/a是ipad几(md511cha是ipad几)

    md511ch/a是ipad几(md511cha是ipad几)

  • 开定位费电吗(苹果手机开定位费电吗)

    开定位费电吗(苹果手机开定位费电吗)

  • iphonexs电池容量多大(iphonexs电池容量79%会掉速吗)

    iphonexs电池容量多大(iphonexs电池容量79%会掉速吗)

  • 手机单声道音频是什么(手机单声道音频怎么变成双声道)

    手机单声道音频是什么(手机单声道音频怎么变成双声道)

  • 打印机的驱动程序怎么安装(打印机的驱动程序在哪里找)

    打印机的驱动程序怎么安装(打印机的驱动程序在哪里找)

  • 怎么让微信群视频过期(怎么微信群视频聊天)

    怎么让微信群视频过期(怎么微信群视频聊天)

  • 抖音消息撤回了怎么看(抖音消息撤回了对方还能看到吗)

    抖音消息撤回了怎么看(抖音消息撤回了对方还能看到吗)

  • 怎样在电脑上给微信升级(怎样在电脑上给u盘杀毒)

    怎样在电脑上给微信升级(怎样在电脑上给u盘杀毒)

  • 苹果11电池能用多久(苹果11电池能用多久不停的玩)

    苹果11电池能用多久(苹果11电池能用多久不停的玩)

  • 频繁恢复出厂设置危害(频繁恢复出厂设置手机变卡了)

    频繁恢复出厂设置危害(频繁恢复出厂设置手机变卡了)

  • vivoz3闪充怎么设置(vivoy3闪充设置)

    vivoz3闪充怎么设置(vivoy3闪充设置)

  • Waterperry花园,英国牛津郡 (© Lauren Hibbit/Danita Delimont)(water gardens)

    Waterperry花园,英国牛津郡 (© Lauren Hibbit/Danita Delimont)(water gardens)

  • PHPCMS漏洞之authkey生成算法问题导致authkey泄露(php网站漏洞)

    PHPCMS漏洞之authkey生成算法问题导致authkey泄露(php网站漏洞)

  • Mybatis常见知识点(mybatis的)

    Mybatis常见知识点(mybatis的)

  • 业务宣传费和广告费的扣除标准
  • 收到稳岗补贴怎么做会计分录小企业会计准则
  • 用友应收账款系统操作
  • 固定资产清理属于流动资产吗
  • 购进农产品取得专用发票
  • 退货未开发票如何做账
  • 房子免租期
  • 票据追索权向谁追索
  • 如何向税务局申请开发票
  • 个体户报税可以朋友代替吗
  • 企业发生的咨询费用
  • 物业公司小规模纳税人如何报税
  • 大中小微企业划分标准2023年
  • 印花税减半征收会计分录怎么做
  • 个税纳税期数如何规定的 怎么选择
  • 资产减值损失和信用减值损失的区别
  • 汇算清缴做完还能改账么
  • 代账代税与自行核算申报应从哪几个角度考虑
  • 免税销售额需要价税分离吗
  • 原材料实际成本法核算问题
  • 按简易办法征收增值税
  • 股权转让会计处理
  • 王者荣耀怎么解除关系
  • 去除页眉的横线快捷方式
  • 生育津贴的相关法律规定
  • win7关机提示
  • 浅谈使用链式管理加强特殊监管场所
  • php parse_url
  • 外贸企业有哪些公司青岛
  • 预付款指的是
  • hue环境搭建
  • 表单的基本语法格式
  • 布拉索夫地图
  • 使用vue搭建项目
  • 承接旅游业务
  • php生成二维码海报
  • vue中数字运算
  • 个人咨询费发票是增值税
  • 公司可以不再提取法定公积金
  • vue做项目的流程
  • 帝国cms移动端
  • 所得税费用为什么不计入营业利润
  • jquery vue.js
  • java基础介绍
  • if三元表达式
  • 纳税人识别号和信用代码一样吗
  • 城市维护建设税,教育费附加,地方教育费附加
  • 工程材料增值税抵扣比例
  • 所得税多缴纳分录
  • 劳务派遣公司账务处理
  • 小企业会计准则2023电子版
  • 幼儿园报税的基础是什么
  • 医院药品过期放多久
  • 公司工会经费怎么花不违规
  • 银行付款手续费发票如何入账
  • 固定资产公司
  • 如何修改sqlserver中sa用户的密码
  • mysql数据库备份方法
  • centos支持哪些cpu
  • windows 8.1 with update
  • 怎么更改windows商店的安装位置
  • windows7开机
  • win7怎么删除右键菜单
  • cocos2dx4.0入门
  • unity3d特效教程
  • 什么是批处理模式
  • linux网络编程有什么用
  • 自定义dialogfragment
  • jquery 右键菜单
  • 安卓竖屏改横屏
  • jquery分页插件的使用
  • jQuery添加类名
  • jquery插件开发方法
  • 地税税务稽查管理办法
  • 怎么屏蔽微信群消息,但是不退出此群
  • 如何推进社会治理
  • 烟台国家税务局王局长
  • 小规模纳税人土地使用税减免政策
  • 食堂增值服务有哪些
  • 车辆报废补贴怎么拿
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设