首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >小程序API之路由详解

小程序API之路由详解

作者头像
前端老鸟
发布于 2019-07-31 09:13:10
发布于 2019-07-31 09:13:10
1.4K00
代码可运行
举报
文章被收录于专栏:front-end technologyfront-end technology
运行总次数:0
代码可运行

小程序API之路由详解

路由

wx.switchTab

  • wx.switchTab(Object object)跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
  • 参数

属性

类型

默认值

必填

说明

url

string

success

function

fail

function

complete

function

  • 示例代码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "tabBar": {
    "list": [{
      "pagePath": "index",
      "text": "首页"
    },{
      "pagePath": "other",
      "text": "其他"
    }]
  }
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wx.switchTab({
  url: '/index'
})

wx.reLaunch

  • wx.reLaunch(Object object)关闭所有页面,打开到应用内的某个页面
  • 参数

属性

类型

默认值

必填

说明

url

string

需要跳转的应用内页面路径,路径后可以带参数。参数与路径之间使用?分隔,参数键与参数值用=相连,不同参数用&分隔;如 'path?key=value&key2=value2'

success

function

fail

function

complete

function

  • 示例代码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wx.reLaunch({
  url: 'test?id=1'
})
// test
Page({
  onLoad (option) {
    console.log(option.query)
  }
})

wx.redirectTo

  • wx.redirectTo(Object object)关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面。
  • 参数

属性

类型

默认值

必填

说明

url

string

success

function

fail

function

complete

function

否 接口调用结束的回调函数(调用成功、失败都会执行)

  • 示例代码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wx.redirectTo({
  url: 'test?id=1'
})

wx.navigateTo

  • wx.navigateTo(Object object)保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面。使用 wx.navigateBack 可以返回到原页面。小程序中页面栈最多十层
  • 参数 Object object | 属性 | 类型 | 默认值 | 必填 | 说明 | | ------ | ------ | ------ | ------ | ------ | | url | | string| || 是 | 需要跳转的应用内非 tabBar 的页面的路径, 路径后可以带参数。参数与路径之间使用 ? 分隔,参数键与参数值用 = 相连,不同参数用 & 分隔;如 'path?key=value&key2=value2'| |events| |Object| || 否 |页面间通信接口,用于监听被打开页面发送到当前页面的数据。基础库 2.7.3 开始支持。| | success| function| || 否 | 接口调用成功的回调函数 | | fail | function| || 否 | 接口调用失败的回调函数 | | complete | function| || 否 | 接口调用结束的回调函数(调用成功、失败都会执行)|
  • 示例代码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wx.navigateTo({
  url: 'test?id=1',
  events: {
    // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据
    acceptDataFromOpenedPage: function(data) {
      console.log(data)
    },
    someEvent: function(data) {
      console.log(data)
    }
    ...
  },
  success: function(res) {
    // 通过eventChannel向被打开页面传送数据
    res.eventChannel.emit('acceptDataFromOpenerPage', { data: 'test' })
  }
})
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Page({
  onLoad: function(option){
    console.log(option.query)
    const eventChannel = this.getOpenerEventChannel()
    eventChannel.emit('acceptDataFromOpenedPage', {data: 'test'});
    eventChannel.emit('someEvent', {data: 'test'});
    // 监听acceptDataFromOpenerPage事件,获取上一页面通过eventChannel传送到当前页面的数据
    eventChannel.on('acceptDataFromOpenerPage', function(data) {
      console.log(data)
    })
  }
})

wx.navigateBack

  • wx.navigateBack(Object object) 关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages 获取当前的页面栈,决定需要返回几层。
  • 参数 Object object | 属性 | 类型 | 默认值 | 必填 | 说明 | | ------ | ------ | ------ | ------ | ------ | |delta| number| | | 是| 返回的页面数,如果 delta 大于现有页面数,则返回到首页。| |success| function| | | 否 | 接口调用成功的回调函数 | |fail | function| | | 否 | 接口调用失败的回调函数 | |complete| function| | | 否 | 接口调用结束的回调函数(调用成功、失败都会执行)|
  • 示例代码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 注意:调用 navigateTo 跳转时,调用该方法的页面会被加入堆栈,而 redirectTo 方法则不会。见下方示例代码

// 此处是A页面
wx.navigateTo({
  url: 'B?id=1'
})

// 此处是B页面
wx.navigateTo({
  url: 'C?id=1'
})

// 在C页面内 navigateBack,将返回A页面
wx.navigateBack({
  delta: 2
})
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年07月22日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Linux】详解如何利用共享内存实现进程间通信
共享内存(Shared Memory)是多进程间共享的一部分物理内存。它允许多个进程访问同一块内存空间,从而在不同进程之间共享和传递数据。这种方式常常用于加速进程间的通信,因为数据不需要在不同的进程间进行拷贝。
用户10923276
2024/04/20
2.1K0
【Linux】详解如何利用共享内存实现进程间通信
【Linux】IPC 进程间通信(二)(共享内存)
🚀 共享内存是一种进程间通信(IPC)机制,它允许多个进程直接访问同一块内存区域,从而实现高效的数据交换。
IsLand1314
2024/11/19
4030
【Linux】IPC 进程间通信(二)(共享内存)
【深入学习Linux】System V共享内存
早在设计Unix时,系统开发者就发现了一个悖论:在某些情况下,系统中的进程既要满足互相隔离又要彼此协同合作。
再睡一下就好
2025/06/11
740
【深入学习Linux】System V共享内存
Linux进程同步机制-Futex
引子 在编译2.6内核的时候,你会在编译选项中看到[*] Enable futex support这一项,上网查,有的资料会告诉你"不选这个内核不一定能正确的运行使用glibc的程序",那futex是什么?和glibc又有什么关系呢? 1. 什么是Futex Futex 是Fast Userspace muTexes的缩写,由Hubertus Franke, Matthew Kirkwood, Ingo Molnar and Rusty Russell共同设计完成。几位都是linux领域的专家,其中可能Ingo Molnar大家更熟悉一些,毕竟是O(1)调度器和CFS的实现者。 Futex按英文翻译过来就是快速用户空间互斥体。其设计思想其实 不难理解,在传统的Unix系统中,System V IPC(inter process communication),如 semaphores, msgqueues, sockets还有文件锁机制(flock())等进程间同步机制都是对一个内核对象操作来完成的,这个内核对象对要同步的进程都是可见的,其提供了共享 的状态信息和原子操作。当进程间要同步的时候必须要通过系统调用(如semop())在内核中完成。可是经研究发现,很多同步是无竞争的,即某个进程进入 互斥区,到再从某个互斥区出来这段时间,常常是没有进程也要进这个互斥区或者请求同一同步变量的。但是在这种情况下,这个进程也要陷入内核去看看有没有人 和它竞争,退出的时侯还要陷入内核去看看有没有进程等待在同一同步变量上。这些不必要的系统调用(或者说内核陷入)造成了大量的性能开销。为了解决这个问 题,Futex就应运而生,Futex是一种用户态和内核态混合的同步机制。首先,同步的进程间通过mmap共享一段内存,futex变量就位于这段共享 的内存中且操作是原子的,当进程尝试进入互斥区或者退出互斥区的时候,先去查看共享内存中的futex变量,如果没有竞争发生,则只修改futex,而不 用再执行系统调用了。当通过访问futex变量告诉进程有竞争发生,则还是得执行系统调用去完成相应的处理(wait 或者 wake up)。简单的说,futex就是通过在用户态的检查,(motivation)如果了解到没有竞争就不用陷入内核了,大大提高了low-contention时候的效率。 Linux从2.5.7开始支持Futex。 2. Futex系统调用 Futex是一种用户态和内核态混合机制,所以需要两个部分合作完成,linux上提供了sys_futex系统调用,对进程竞争情况下的同步处理提供支持。 其原型和系统调用号为     #include <linux/futex.h>     #include <sys/time.h> int futex (int *uaddr, int op, int val, const struct timespec *timeout,int *uaddr2, int val3);     #define __NR_futex              240     虽然参数有点长,其实常用的就是前面三个,后面的timeout大家都能理解,其他的也常被ignore。     uaddr就是用户态下共享内存的地址,里面存放的是一个对齐的整型计数器。     op存放着操作类型。定义的有5中,这里我简单的介绍一下两种,剩下的感兴趣的自己去man futex FUTEX_WAIT: 原子性的检查uaddr中计数器的值是否为val,如果是则让进程休眠,直到FUTEX_WAKE或者超时(time-out)。也就是把进程挂到uaddr相对应的等待队列上去。 FUTEX_WAKE: 最多唤醒val个等待在uaddr上进程。     可见FUTEX_WAIT和FUTEX_WAKE只是用来挂起或者唤醒进程,当然这部分工作也只能在内核态下完成。有些人尝试着直接使用futex系统调 用来实现进程同步,并寄希望获得futex的性能优势,这是有问题的。应该区分futex同步机制和futex系统调用。futex同步机制还包括用户态 下的操作,我们将在下节提到。 3. Futex同步机制 所有的futex同步操作都应该从用户空间开始,首先创建一个futex同步变量,也就是位于共享内存的一个整型计数器。 当 进程尝试持有锁或者要进入互斥区的时候,对futex执行"down"操作,即原子性的给futex同步变量减1。如果同步变量变为0,则没有竞争发生, 进程照常执行。如果同步变量是个负数,则意味着有竞争发生,需要调用futex系统调用的futex_wait操作休眠当前进程。 当进程释放锁或 者要离开互斥区的时候,对futex进行"up"操作,即原子性的给futex同步变量加1。如果同步变量由0变成1,则没有竞争发生,进程照常执
王亚昌
2018/08/03
15.6K0
System V IPC 共享内存详解
​ 这里我们介绍的这种通信方式也就是 system V IPC 在我们后面的使用和日常见到的其实并不多,但是包括其中的共享内存、消息队列、信号量,我们如果了解共享内存其原理的话,能够更好的帮助我们了解之前我们学过的进程地址空间的概念!
利刃大大
2023/04/12
1.1K0
System V IPC 共享内存详解
字节跳动微服务架构下的高性能优化实践
2019 年,字节跳动服务框架组针对大规模微服务架构下遇到的功能和性能痛点,以及吸收历史上旧框架下积累的经验与教训,着手开发了 RPC 框架 Kitex 以及周边一系列相关基础库,并在 2021 年正式在 Github 上开源。
深度学习与Python
2023/09/08
9010
字节跳动微服务架构下的高性能优化实践
C语言共享内存
共享内存是进程间通信中最简单的方式之一。共享内存允许两个或更多进程访问同一块内存,就如同 malloc() 函数向不同进程返回了指向同一个物理内存区域的指针。当一个进程改变了这块地址中的内容的时候,其它进程都会察觉到这个更改。
lpe234
2020/07/27
4.4K0
从IPC到分布式软总线的随笔
在Linux 系统中, 客观来说,缺乏相对开发者比较友好的进程间通信框架。谈到Linux上进程间通信,一般都会想起管道(匿名、有名)、信号/信号灯、共享内存、消息队列和socket。这些都是偏低层的技术,有没有方便开发者使用的技术或者框架呢?软件总线以及分布式软总线或许是一种不错的候选。
半吊子全栈工匠
2023/02/24
1.6K0
从IPC到分布式软总线的随笔
UNIX共享内存总结
    共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式。两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B各自的进程地址空间。进程A可以即时看到进程B对共享内存中数据的更新,反之亦然。由于多个进程共享同一块内存区域,必然需要某种同步机制,互斥锁和信号量都可以。采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。因此,采用共享内存的通信方式效率是非常高的。
王亚昌
2018/08/03
2.5K0
一种C程序使用IPC多进程共享内存并实现热迁移的方法
这篇文章讨论如何使用CRIU迁移使用了共享内存的程序,主要讨论其中的前两种共享内存方法,最终介绍一种支持热迁移的C程序共享内存使用方法。
宋天伦
2020/12/31
1.4K0
OpenHarmony内核源码分析(进程通讯篇) | 九种进程间通讯方式速揽
鸿蒙内核默认支持 64个进程和128个任务,由进程池和任务池统一管理.内核设计尽量不去打扰它们,让各自过好各自的日子, 但大家毕竟在一口锅里吃饭, 不可能不与外界联系, 联系就得有渠道,有规矩.
小帅聊鸿蒙
2025/03/13
1150
OpenHarmony内核源码分析(进程通讯篇) | 九种进程间通讯方式速揽
【Linux】「共享内存揭秘」:高效进程通信的终极指南
探索Python数据结构与算法:解锁编程的无限可能:https://cloud.tencent.com/developer/article/2471556
Yui_
2024/11/27
4980
【Linux】「共享内存揭秘」:高效进程通信的终极指南
进程间通信学习小结(共享内存)
要使用共享内存,应该有如下步骤:1.开辟一块共享内存shmget()2.允许本进程使用共某块共享内运维
Java架构师必看
2021/03/22
9520
System|IPC|Rethinking IPC
IPC,进程间通信,是打破地址空间隔离的必经之路。本文按照个人理解对于IPC进行了一些分类与整理。
朝闻君
2021/11/22
8500
System|IPC|Rethinking IPC
共享内存进阶指南:深入学习mmap和shm*的用法与技巧
文件是存储在磁盘上的,要快速的读写一个大文件,可以通过共享内存的方式(mmap等)。mmap内部是使用的DMA技术,DMA是内存和磁盘之间的传输方式,有自己的指令,不需要CPU的参与。
Lion 莱恩呀
2024/10/07
6370
共享内存进阶指南:深入学习mmap和shm*的用法与技巧
Linux进程间通信(四) - 共享内存
共享内存的优势 采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据:一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程之间在共享内存时,并不总是读写少量数据后就解除映射,有新的通信时,再重新建立共享内存区域。而是保持共享区域,直到通信完毕为止,这样,数据内容一直保存在共享内存中,并没有写回文件。共享内存中的内容往往是在解除映射时才写回文件的。因
三丰SanFeng
2018/01/16
7.3K0
Linux进程间通信(四) - 共享内存
【Linux】进程间通信——共享内存
共享内存(Shared Memory)是一种 进程间通信(IPC) 机制,允许多个进程共享同一块物理内存,从而提高数据交换效率。相比其他 IPC 方式(如管道、消息队列等),共享内存具有 速度快、低开销 的优势,因为数据直接存储在内存中,而无需通过内核进行数据拷贝。
用户11305458
2025/02/28
5380
【Linux】进程间通信——共享内存
Linux笔记(16)| 进程同步机制——管道和IPC
今天要分享的是Linux进程的同步机制,包括管道和IPC。之前学习的信号也有控制进程同步的作用,但是信号仅仅传输很少的信息,而且系统开销大,所以这里再介绍几种其他的进程同步机制。在之前的一篇文章中有提到相关内容,但是当时没有详细展开,可以回顾一下:Linux笔记(10)| 进程概述。
飞哥
2020/11/25
2.2K0
Linux笔记(16)| 进程同步机制——管道和IPC
进程通信之共享内存「建议收藏」
共享内存 共享内存就是同意两个不相关的进程訪问同一个逻辑内存。共享内存是在两个正在执行的进程之间共享和传递数据的一种很有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。
全栈程序员站长
2022/07/08
6840
Linux 进程间通信 : 共享内存(上)
邹立巍
2017/07/26
11.7K3
推荐阅读
相关推荐
【Linux】详解如何利用共享内存实现进程间通信
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验