2025年4月

在微信小程序开发中,wx.redirectTowx.reLaunch 是两种常用的页面跳转方法,它们的主要区别在于对页面栈的处理方式和适用场景。以下是它们的具体使用场景和区别:


1. wx.redirectTo

功能:关闭当前页面,跳转到应用内的某个页面(不能跳转到 tabBar 页面)。
特点

  • 页面栈处理:仅关闭当前页面,新页面替换当前页面的位置,页面栈深度不变。
  • 返回行为:跳转后左上角显示“返回首页”图标(无法返回原页面)。
  • 适用场景

    • 流程型页面:如登录成功后跳转到首页,无需保留登录页。
    • 避免内存占用:当页面栈较深时(接近 10 层限制),用 redirectTo 替代 navigateTo 减少内存压力。
    • 数据重置:需要完全替换当前页面内容时(如表单提交后跳转结果页)。

示例代码

wx.redirectTo({
  url: '/pages/home/index'
});

2. wx.reLaunch

功能:关闭所有页面(包括 tabBar 页面),打开应用内的某个页面(可跳转到任意页面)。
特点

  • 页面栈处理:清空整个页面栈,仅保留目标页面。
  • 返回行为:跳转后左上角显示“返回首页”图标(无历史记录可返)。
  • 适用场景

    • 重置应用状态:如用户退出登录后跳转到登录页,清空所有历史。
    • 深层级跳转:从多级嵌套页面直接返回首页或特定页(如支付完成后的结果页)。
    • TabBar 跳转:需从非 TabBar 页面跳转到 TabBar 页面时(效果类似 switchTab,但可传参)。

示例代码

wx.reLaunch({
  url: '/pages/login/index'
});

核心区别总结

特性wx.redirectTowx.reLaunch
关闭页面范围仅当前页面所有页面(清空栈)
跳转限制不能跳转到 tabBar 页面可跳转到任意页面(包括 tabBar)
内存管理减少单页内存占用彻底释放所有页面内存
典型场景流程中断或替换当前页全局重置或深层级跳转

选择建议

  • 优先用 redirectTo:当只需替换当前页且无需跳转 TabBar 时(如列表页→详情页的平级跳转)。
  • 优先用 reLaunch:当需要清空历史或跳转 TabBar 页面时(如退出登录、支付完成)。
  • 避免滥用:频繁使用 reLaunch 可能影响用户体验(如无法返回),而过度使用 redirectTo 可能导致页面栈混乱。

如果需要保留页面历史,应选择 wx.navigateTo;若涉及 TabBar 跳转且无需清空栈,则用 wx.switchTab

如果需要为本地配置多个 Gitee 账号的 SSH 密钥(例如个人账号和工作账号),可以通过 多密钥对 + SSH Config 配置 实现。以下是详细步骤:


1. 为每个账号生成独立的 SSH 密钥

假设你有两个 Gitee 账号:

  • 账号1(个人):user1@gitee.com
  • 账号2(工作):user2@gitee.com

分别生成两对密钥:

# 为账号1生成密钥(默认保存为 id_rsa_user1)
ssh-keygen -t rsa -C "user1@gitee.com" -f ~/.ssh/id_rsa_user1

# 为账号2生成密钥(默认保存为 id_rsa_user2)
ssh-keygen -t rsa -C "user2@gitee.com" -f ~/.ssh/id_rsa_user2

生成后,~/.ssh/ 目录下会有:

id_rsa_user1      # 账号1的私钥
id_rsa_user1.pub  # 账号1的公钥
id_rsa_user2      # 账号2的私钥
id_rsa_user2.pub  # 账号2的公钥

2. 将公钥分别添加到对应的 Gitee 账号

  • 分别复制两个公钥内容:

    cat ~/.ssh/id_rsa_user1.pub  # 复制到账号1的SSH公钥设置
    cat ~/.ssh/id_rsa_user2.pub  # 复制到账号2的SSH公钥设置
  • 登录各自的 Gitee 账号 → 设置SSH公钥 → 添加对应的公钥。

3. 配置 SSH Config 文件

编辑 ~/.ssh/config 文件(没有则新建),为每个账号指定对应的密钥和主机别名:

# 账号1(个人)的配置
Host gitee-user1
    HostName gitee.com
    User git
    IdentityFile ~/.ssh/id_rsa_user1
    IdentitiesOnly yes

# 账号2(工作)的配置
Host gitee-user2
    HostName gitee.com
    User git
    IdentityFile ~/.ssh/id_rsa_user2
    IdentitiesOnly yes
  • Host:自定义的主机别名(如 gitee-user1),用于区分不同账号。
  • IdentityFile:指定该账号使用的私钥路径。
  • IdentitiesOnly yes:强制只使用指定的私钥。

4. 测试 SSH 连接

分别测试两个账号的配置是否成功:

# 测试账号1
ssh -T git@gitee-user1

# 测试账号2
ssh -T git@gitee-user2

如果看到 Hello YourName! You've successfully authenticated 表示配置成功。


5. 克隆或修改仓库时指定主机别名

  • 克隆仓库
    使用 Host 中定义的别名替换原来的 gitee.com

    # 克隆账号1的仓库
    git clone git@gitee-user1:user1/repo1.git
    
    # 克隆账号2的仓库
    git clone git@gitee-user2:user2/repo2.git
  • 修改现有仓库的远程地址
    如果已克隆的仓库需要切换账号,修改远程 URL:

    git remote set-url origin git@gitee-user1:user1/repo1.git

6. 注意事项

  1. 权限问题
    确保私钥文件权限为 600

    chmod 600 ~/.ssh/id_rsa_*
  2. 统一邮箱问题
    Gitee 会根据公钥绑定的邮箱识别账号,但本地 -C 参数只是注释,不影响实际认证。
  3. HTTPS 备用方案
    如果 SSH 配置复杂,可以临时使用 HTTPS 协议(需输入账号密码):

    git clone https://gitee.com/username/repo.git

总结

  • 核心思路:为每个账号生成独立密钥对,通过 SSH Config 文件匹配不同的仓库地址。
  • 优势:无需频繁切换全局配置,通过别名自动选择对应的密钥。
  • 适用场景:多账号协作、个人与工作项目分离等。