程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • 原生微信小程序

  • uniapp多端开发

    • 快速入门

      • 环境搭建和介绍
      • 全局配置文件(pages.json)
      • 创建新页面和页面路由跳转
        • 一、新建页面
        • 二、配置页面路径和样式
        • 三、预览页面
        • 四、页面路由跳转
          • 1. 常见的跳转API
          • 2. 在页面中使用示例
          • 3. 页面间传参
      • 配置底部导航栏(tabBar)
      • 文本和图标组件
      • uni-row 快速布局
      • 页面样式设计
      • 下拉刷新和上拉加载
      • 发送网络请求
      • 数据的缓存
      • 图片的上传
    • 内置组件

    • 扩展组件

  • 小程序开发
  • uniapp多端开发
  • 快速入门
scholar
2025-01-28
目录

创建新页面和页面路由跳转

# 创建新页面和页面路由跳转

前言

在 uni-app 项目中,创建新页面并配置其样式是非常常见的操作。无论是新增功能页面,还是自定义页面样式,都需要在项目中创建新的页面文件,并在 pages.json 中定义其路径。以下是创建新页面并配置页面路由跳转的步骤。

# 一、新建页面

你可以直接新建页面文件,也可以先创建目录,再在目录中创建页面文件。推荐的方法是根据项目的结构先创建对应的目录,这样便于管理和维护多个页面。

步骤如下

  1. 右键项目目录,选择 “新建目录”,为新页面创建一个文件夹。例如,我们可以创建一个名为 ucenter 的目录。

    image-20241019165540365

  2. 新建页面文件:进入刚创建的目录,右键目录,选择 “新建 Vue 文件”,并命名为 ucenter.vue。

    image-20241019165616461

  3. 确认页面文件创建成功:你现在可以在项目中看到新创建的 ucenter.vue 文件,该文件是一个新的 Vue 页面。

    新页面创建成功

  4. 页面内容编辑:打开 ucenter.vue 文件,并为页面添加基本内容,例如页面的模板、样式和逻辑。

    <template>
      <view class="container">
        <text>这是新创建的个人中心页面</text>
      </view>
    </template>
    
    <script>
    export default {
      data() {
        return {};
      },
      methods: {}
    };
    </script>
    
    <style>
    .container {
      display: flex;
      justify-content: center;
      align-items: center;
      height: 100vh;
      background-color: #f5f5f5;
    }
    </style>
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24

    image-20241019170020078

# 二、配置页面路径和样式

创建页面文件后,你还需要将页面路径添加到 pages.json 中,以便应用知道这个页面存在。pages.json 文件不仅用来定义页面路径,还可以配置每个页面的导航栏样式等。

配置步骤

  1. 打开 pages.json 文件。

  2. 在 pages 数组中新增一项,配置新页面的路径。路径指向新创建的 ucenter.vue 文件,并可以为该页面设置特定的导航栏样式。

    {
      "pages": [
        {
          "path": "pages/test/test",  // 设置新页面的路径,指向新建的 test.vue 文件
          "style": {
            "navigationBarTitleText": "个人中心",  // 设置页面的导航栏标题
            "navigationBarBackgroundColor": "#ff55ff",  // 设置导航栏背景颜色为粉色
            "navigationBarTextStyle": "white"  // 设置导航栏文字颜色为白色
          }
        }
      ]
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    在这个例子中,我们配置了新页面的路径为 pages/ucenter/ucenter,并且为该页面设置了自定义导航栏样式:导航栏的背景颜色为粉色,文字颜色为白色,标题显示为“个人中心”。

    image-20241019165334258

# 三、预览页面

完成页面的创建和配置后,你可以在开发工具中预览该页面。你可以通过模拟器或浏览器进行预览。

浏览器预览步骤

  1. 打开项目的开发工具,选择 “运行” 选项,选择 “在浏览器中打开”。

  2. 在浏览器的地址栏中输入新页面的路径,例如:localhost:8080/#/pages/ucenter/ucenter,查看新创建的页面是否正常显示。

    如果页面显示正常,你应该能看到页面展示了“这是新创建的个人页面”的内容,并且导航栏标题显示为“个人中心”,导航栏背景颜色为粉色,文字颜色为白色。

    image-20241019170035570

    你还可以发现页面的导航栏样式成功覆盖了全局配置的样式,展示了该页面独有的导航栏设置。

# 四、页面路由跳转

在 uni-app 中实现页面之间的跳转,主要依靠 uni.navigateTo、uni.redirectTo、uni.switchTab 等API。下面是常见的几种跳转方式及使用示例:

# 1. 常见的跳转API

  1. uni.navigateTo(options)

    • 跳转到非 TabBar 页面,保留当前页面历史,可使用 uni.navigateBack() 返回。

    • 示例:

      uni.navigateTo({
        url: '/pages/ucenter/ucenter' // 跳转到个人中心页面
      });
      
      1
      2
      3
    • 优点:可返回上一个页面;缺点:层级过深时会有页面栈限制(微信小程序限制最多5层)。

  2. uni.redirectTo(options)

    • 跳转到非 TabBar 页面,关闭当前页面,无法返回上一页。

    • 示例:

      uni.redirectTo({
        url: '/pages/ucenter/ucenter'
      });
      
      1
      2
      3
    • 适用场景:如登录成功后,不允许返回到登录页。

  3. uni.switchTab(options)

    • 跳转到 TabBar 页面,并关闭其他所有非 TabBar 页面。

    • 示例:

      uni.switchTab({
        url: '/pages/home/home' // 必须在 pages.json 的 tabBar 中配置对应页面才能跳转成功
      });
      
      1
      2
      3
    • 适用场景:在底部或顶部标签切换的应用结构中,跳转至指定 Tab。

  4. uni.reLaunch(options)

    • 关闭所有页面,打开到指定页面。

    • 示例:

      uni.reLaunch({
        url: '/pages/index/index'
      });
      
      1
      2
      3
    • 适用场景:如做“重启应用”或“退出登录后回到首页”等。

# 2. 在页面中使用示例

假设我们在首页(pages/index/index.vue)添加一个按钮,点击后跳转到新建的个人中心页面(pages/ucenter/ucenter.vue)。

<template>
  <view class="index-container">
    <view class="btn" @click="goUcenter">跳转到个人中心</view>
  </view>
</template>

<script>
export default {
  methods: {
    goUcenter() {
      uni.navigateTo({
        url: '/pages/ucenter/ucenter'
      });
    }
  }
};
</script>

<style>
.index-container {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
}
.btn {
  padding: 10px 20px;
  background-color: #007aff;
  color: #fff;
  border-radius: 4px;
}
</style>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

说明:

  1. @click 事件调用 goUcenter() 方法。
  2. goUcenter() 方法中使用 uni.navigateTo 函数,传入 url 参数,就可以在点击按钮后跳转到“个人中心”页面。

# 3. 页面间传参

如果需要在跳转时传递参数,可以在 url 后面拼接 query。例如:

uni.navigateTo({
  url: '/pages/ucenter/ucenter?userId=123'
});
1
2
3

在目标页面 onLoad 或 onShow 中通过 options 获取参数:

onLoad(options) {
  console.log(options.userId); // 123
}
1
2
3
编辑此页 (opens new window)
上次更新: 2025/02/01, 02:18:15
全局配置文件(pages.json)
配置底部导航栏(tabBar)

← 全局配置文件(pages.json) 配置底部导航栏(tabBar)→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式