分类 前端笔记 下的文章

在微信小程序开发中,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 文件匹配不同的仓库地址。
  • 优势:无需频繁切换全局配置,通过别名自动选择对应的密钥。
  • 适用场景:多账号协作、个人与工作项目分离等。

以下是 Git 的常用命令分类整理,覆盖日常开发中的核心操作场景:


一、仓库初始化与克隆

  1. git init
    初始化本地 Git 仓库,生成 .git 目录。

    git init
  2. git clone <url>
    克隆远程仓库到本地,支持 SSH/HTTPS 协议。

    git clone https://github.com/user/repo.git

二、提交与同步

  1. git add
    将文件添加到暂存区(Staging Area)。

    git add .           # 添加所有修改
    git add file.txt    # 添加单个文件
  2. git commit
    提交暂存区的修改到本地仓库。

    git commit -m "提交说明"    # 常规提交
    git commit -am "快速提交"   # 跳过暂存,直接提交跟踪过的文件
  3. git push
    推送本地提交到远程仓库。

    git push origin main
  4. git pull
    拉取远程仓库最新代码并合并到当前分支(相当于 git fetch + git merge)。

    git pull origin main
  5. git fetch
    仅下载远程仓库的更新,不自动合并(需手动 git merge)。

    git fetch --all

三、分支管理

  1. git branch
    查看、创建或删除分支。

    git branch               # 列出本地分支
    git branch -a            # 列出所有分支(本地+远程)
    git branch new-feature   # 创建新分支
    git branch -d old-branch # 删除分支
  2. git checkout
    切换分支或恢复文件。

    git checkout main        # 切换到 main 分支
    git checkout -b dev      # 创建并切换到 dev 分支
  3. git merge
    合并指定分支到当前分支。

    git merge dev          # 将 dev 分支合并到当前分支

四、状态与差异

  1. git status
    查看工作区和暂存区的文件状态。

    git status
  2. git diff
    比较文件修改内容。

    git diff             # 比较工作区与暂存区
    git diff --staged    # 比较暂存区与最新提交
    git diff HEAD~1      # 比较当前与上一次提交

五、撤销与恢复

  1. git reset
    撤销提交或取消暂存。

    git reset HEAD~1         # 回退到上一次提交(保留修改)
    git reset --hard HEAD~1  # 强制回退并丢弃修改
  2. git restore
    恢复文件到指定状态(Git 2.23+ 新增)。

    git restore file.txt      # 恢复工作区文件到最近提交
    git restore --staged file.txt # 取消暂存
  3. git stash
    临时保存未提交的修改。

    git stash          # 暂存当前修改
    git stash pop      # 恢复最近一次暂存的修改

六、历史与标签

  1. git log
    查看提交历史。

    git log --oneline    # 简洁模式
    git log --graph      # 图形化分支历史
  2. git tag
    管理版本标签。

    git tag v1.0.0       # 创建标签
    git push --tags      # 推送所有标签到远程

七、远程仓库

  1. git remote
    管理远程仓库关联。

    git remote -v         # 查看关联的远程仓库
    git remote add origin <url>  # 添加远程仓库

常用场景示例


以上命令覆盖了 Git 日常使用的 90% 场景。如需更详细操作(如 git rebasegit cherry-pick 等),可参考 Git 官方文档或相关教程 11(https://www.cnblogs.com/kenshinobiy/p/4543976.html)23(https://blog.csdn.net/m0_45234510/article/details/120181503)