当前位置: 首页 > article >正文

【微信小程序】5|我的页面 | 我的咖啡店-综合实训

我的页面

引言

        本文将详细解析如何实现一个包含登录注册、多个功能模块跳转以及特定功能展示的“我的”页面。我们将使用 Vant Weapp 组件库来简化开发过程,并确保代码的高级性和条理性。

1. 项目结构

首先,确保你的项目结构如下所示:

- pages/
  - mine/
    - mine.js
    - mine.wxml
    - mine.wxss
- app.json

2. app.json 配置

app.json 中引入 Vant Weapp 组件,确保组件库正确加载:

{
  "van-cell": "@vant/weapp/cell/index",
  "van-cell-group": "@vant/weapp/cell-group/index"
}

3. mine.js

3.1 代码写作思路

mine.js 中,我们定义了三个主要方法:goIndexgoHomegoAA,分别用于跳转到普通页面、tabBar 页面和带参数的页面。这些方法通过微信小程序的 API 实现页面跳转。

3.2 介绍方法

  • goIndex:跳转到普通页面 index

  • goHome:跳转到 tabBar 页面 home

  • goAA:带参数跳转到页面 AA,参数通过 event.currentTarget.dataset.a 获取,并拼接到 URL 中。

// pages/mine/mine.js
Page({
  // 1. 跳转到普通页面
  goIndex() {
    wx.navigateTo({
      url: '../index/index',
    });
  },
  // 2. 跳转到tabBar页面
  goHome() {
    wx.switchTab({
      url: '../home/home',
    });
  },
  // 3. 跳转页面 带参数
  goAA(event) {
    // 获取自定义属性a的值
    let a = event.currentTarget.dataset.a;
    console.log("event", a);
    wx.navigateTo({
      // 带参数的url怎么写?
      // 路径?参数名=值
      url: '../AA/AA?aa=' + a,
    });
  }
});

4. mine.wxml

4.1 代码写作思路

mine.wxml 中,我们使用 Vant Weapp 的 van-cell 组件和微信小程序的 navigator 组件来构建页面。van-cell 组件用于创建列表单元,navigator 组件用于创建功能模块的跳转入口。

4.2 介绍方法

  • 登录注册:使用 van-cell 组件创建登录注册入口,点击时调用 goIndex 方法。

  • 功能模块:使用 navigator 组件创建多个功能模块的跳转入口,每个 navigator 包含一个图标和文本。

  • 特定功能:使用 van-cell 组件创建特定功能的展示,点击时调用 goHomegoAA 方法。

<!-- pages/mine/mine.wxml -->
<view class="mine">
  <!-- 登录页面开始 -->
  <van-cell class="login" title="点击登录/注册" bind:click="goIndex" is-link>
    <image slot="icon" src="/image/user.png" class="custom-icon" mode="aspectFit" referrerPolicy="no-referrer" />
  </van-cell>
  <!-- 登陆页面结束 -->

  <!-- 小页面跳转开始 -->
  <view class="container">
    <!-- 第一行 -->
    <view class="row">
      <navigator url="/pages/bookshelf/bookshelf" class="item">
        <image class="icon" src="/image/bookshelf-icon.png" />
        <text class="text">书架</text>
      </navigator>
      <navigator url="/pages/dailyupdate/dailyupdate" class="item">
        <image class="icon" src="/image/dailyupdate-icon.png" />
        <text class="text">每日更新</text>
      </navigator>
      <navigator url="/pages/readinghistory/readinghistory" class="item">
        <image class="icon" src="/image/readinghistory-icon.png" />
        <text class="text">浏览历史</text>
      </navigator>
    </view>
    <!-- 第二行 -->
    <view class="row">
      <navigator url="/pages/favorites/favorites" class="item">
        <image class="icon" src="/image/favorites-icon.png" />
        <text class="text">点赞的漫画</text>
      </navigator>
      <navigator url="/pages/downloads/downloads" class="item">
        <image class="icon" src="/image/downloads-icon.png" />
        <text class="text">我的下载</text>
      </navigator>
      <navigator url="/pages/messages/messages" class="item">
        <image class="icon" src="/image/messages-icon.png" />
        <text class="text">我的消息</text>
      </navigator>
    </view>
    <!-- 第三行 -->
    <view class="row">
      <navigator url="/pages/author/author" class="item">
        <image class="icon" src="/image/author-icon.png" />
        <text class="text">成为作家</text>
      </navigator>
      <navigator url="/pages/merchandise/merchandise" class="item">
        <image class="icon" src="/image/merchandise-icon.png" />
        <text class="text">周边商城</text>
      </navigator>
      <navigator url="/pages/wallet/wallet" class="item">
        <image class="icon" src="/image/wallet-icon.png" />
        <text class="text">我的钱包</text>
      </navigator>
    </view>
    <!-- 第四行 -->
    <view class="row">
      <navigator url="/pages/feedback/feedback" class="item">
        <image class="icon" src="/image/feedback-icon.png" />
        <text class="text">反馈与帮助</text>
      </navigator>
      <navigator url="/pages/productculture/productculture" class="item">
        <image class="icon" src="/image/productculture-icon.png" />
        <text class="text">KC指南</text>
      </navigator>
      <!-- 空白占位 -->
      <navigator class="item">
        <image class="icon" />
        <text class="text"></text>
      </navigator>
    </view>
  </view>
  <!-- 小页面跳转结束 -->

  <!-- cell实现开始 -->
  <van-cell title="免流服务">
    <text slot="right-icon" class="right-icon-text">流量免费任性看漫画</text>
  </van-cell>
  <van-cell title="0元抽奖">
    <text slot="right-icon" class="right-icon-text">K币会员等你来抽</text>
  </van-cell>
  <van-cell title="青少年模式">
    <text slot="right-icon" class="right-icon-text">未开启</text>
  </van-cell>
  <van-cell title="设置" is-link />
  <!-- cell实现结束 -->

  <van-cell title="去Home" bind:click="goHome" is-link />
  <van-cell title="去AA" bind:click="goAA" data-a="123" is-link />
</view>

5. mine.wxss

5.1 代码写作思路

mine.wxss 中,我们定义了页面的样式,确保布局和视觉效果符合设计要求。通过灵活使用 Flexbox 布局,我们实现了响应式设计,确保页面在不同设备上都能良好显示。

5.2 介绍方法

  • .mine:设置页面的外层容器。

  • .custom-icon:设置登录注册图标。

  • .van-cell:设置列表单元的样式。

  • .container:设置功能模块的容器。

  • .row:设置每行的功能模块。

  • .item:设置每个功能模块的样式。

  • .icon:设置功能模块的图标。

  • .text:设置功能模块的文本。

  • .right-icon-text:设置 van-cell 右侧文本的样式。

/* pages/mine/mine.wxss */
.mine {
  padding: 0rpx;
}

.custom-icon {
  width: 80px;
  height: 100px;
}

.van-cell {
  display: flex;
  align-items: center;
}

.container {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 20rpx;
}

.row {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  width: 100%;
}

.item {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  margin: 30rpx;
  /* 每个 item 占据 30% 的宽度 */
  width: 30%;
}

.icon {
  width: 70rpx;
  height: 70rpx;
  margin-bottom: 10rpx;
}

.text {
  /* 设置字体大小 */
  font-size: 10px;
  /* 设置文本对齐方式 */
  text-align: center;
  /* 设置行高 */
  line-height: 24px;
}

.right-icon-text {
  /* 设置字体大小 */
  font-size: 10px;
  /* 浅灰色 */
  color: #c0c0c0;
}

6. 页面展示

6.1 登录注册

点击“点击登录/注册”会跳转到 index 页面。

6.2 功能模块

包含书架、每日更新、浏览历史、点赞的漫画、我的下载、我的消息、成为作家、周边商城、我的钱包、反馈与帮助、KC指南等模块,点击会跳转到相应的页面。

6.3 特定功能

包含免流服务、0元抽奖、青少年模式、设置等,点击“去Home”会跳转到 home 页面,点击“去AA”会带参数跳转到 AA 页面。

7. 总结

        通过上述步骤,我们成功实现了一个功能丰富且用户友好的“我的”页面。使用 Vant Weapp 组件库可以大大简化开发过程,提高开发效率。组件化的设计不仅提高了代码的复用性和可维护性,还使得页面结构更加清晰。希望本文能对你有所帮助,如果你有任何问题或建议,欢迎留言交流。

8. 代码仓库

你可以在 GitHub 找到完整的项目代码,欢迎 Star 和 Fork。

完整代码

app.json

    "van-cell": "@vant/weapp/cell/index",
    "van-cell-group": "@vant/weapp/cell-group/index"

mine.js

// pages/mine/mine.js
Page({
  // 1. 跳转到普通页面
  goIndex() {
    wx.navigateTo({
      url: '../index/index',
    });
  },
  // 2. 跳转到tabBar页面
  goHome() {
    wx.switchTab({
      url: '../home/home',
    });
  },
  // 3. 跳转页面 带参数
  goAA(event) {
    // 获取自定义属性a的值
    let a = event.currentTarget.dataset.a;
    console.log("event", a);
    wx.navigateTo({
      // 带参数的url怎么写?
      // 路径?参数名=值
      url: '../AA/AA?aa=' + a,
    });
  }
});

mine.wxml

<!-- pages/mine/mine.wxml -->
<view class="mine">
  <!-- 登录页面开始 -->
  <van-cell class="login" title="点击登录/注册" bind:click="goIndex" is-link>
    <image slot="icon" src="/image/user.png" class="custom-icon" mode="aspectFit" referrerPolicy="no-referrer" />
  </van-cell>
  <!-- 登陆页面结束 -->

  <!-- 小页面跳转开始 -->
  <view class="container">
    <!-- 第一行 -->
    <view class="row">
      <navigator url="/pages/bookshelf/bookshelf" class="item">
        <image class="icon" src="/image/bookshelf-icon.png" />
        <text class="text">书架</text>
      </navigator>
      <navigator url="/pages/dailyupdate/dailyupdate" class="item">
        <image class="icon" src="/image/dailyupdate-icon.png" />
        <text class="text">每日更新</text>
      </navigator>
      <navigator url="/pages/readinghistory/readinghistory" class="item">
        <image class="icon" src="/image/readinghistory-icon.png" />
        <text class="text">浏览历史</text>
      </navigator>
    </view>
    <!-- 第二行 -->
    <view class="row">
      <navigator url="/pages/favorites/favorites" class="item">
        <image class="icon" src="/image/favorites-icon.png" />
        <text class="text">点赞的漫画</text>
      </navigator>
      <navigator url="/pages/downloads/downloads" class="item">
        <image class="icon" src="/image/downloads-icon.png" />
        <text class="text">我的下载</text>
      </navigator>
      <navigator url="/pages/messages/messages" class="item">
        <image class="icon" src="/image/messages-icon.png" />
        <text class="text">我的消息</text>
      </navigator>
    </view>
    <!-- 第三行 -->
    <view class="row">
      <navigator url="/pages/author/author" class="item">
        <image class="icon" src="/image/author-icon.png" />
        <text class="text">成为作家</text>
      </navigator>
      <navigator url="/pages/merchandise/merchandise" class="item">
        <image class="icon" src="/image/merchandise-icon.png" />
        <text class="text">周边商城</text>
      </navigator>
      <navigator url="/pages/wallet/wallet" class="item">
        <image class="icon" src="/image/wallet-icon.png" />
        <text class="text">我的钱包</text>
      </navigator>
    </view>
    <!-- 第四行 -->
    <view class="row">
      <navigator url="/pages/feedback/feedback" class="item">
        <image class="icon" src="/image/feedback-icon.png" />
        <text class="text">反馈与帮助</text>
      </navigator>
      <navigator url="/pages/productculture/productculture" class="item">
        <image class="icon" src="/image/productculture-icon.png" />
        <text class="text">KC指南</text>
      </navigator>
      <!-- 空白占位 -->
      <navigator class="item">
        <image class="icon" />
        <text class="text"></text>
      </navigator>
    </view>
  </view>
  <!-- 小页面跳转结束 -->

  <!-- cell实现开始 -->
  <van-cell title="免流服务">
    <text slot="right-icon" class="right-icon-text">流量免费任性看漫画</text>
  </van-cell>
  <van-cell title="0元抽奖">
    <text slot="right-icon" class="right-icon-text">K币会员等你来抽</text>
  </van-cell>
  <van-cell title="青少年模式">
    <text slot="right-icon" class="right-icon-text">未开启</text>
  </van-cell>
  <van-cell title="设置" is-link />
  <!-- cell实现结束 -->


  <van-cell title="去Home" bind:click="goHome" is-link />
  <van-cell title="去AA" bind:click="goAA" is-link />
</view>

mine.wxss

/* pages/mine/mine.wxss */
.mine {
  padding: 0rpx;
}

.custom-icon {
  width: 80px;
  height: 100px;
}

.van-cell {
  display: flex;
  align-items: center;
}

.container {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 20rpx;
}

.row {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  width: 100%;
}

.item {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  margin: 30rpx;
  /* 每个 item 占据 30% 的宽度 */
  width: 30%;
}

.icon {
  width: 70rpx;
  height: 70rpx;
  margin-bottom: 10rpx;
}

.text {
  /* 设置字体大小 */
  font-size: 10px;
  /* 设置文本对齐方式 */
  text-align: center;
  /* 设置行高 */
  line-height: 24px;
}

.right-icon-text {
  /* 设置字体大小 */
  font-size: 10px;
  /* 浅灰色 */
  color: #c0c0c0;
}

 页面展示

包含登录注册、多个功能模块跳转以及特定功能展示的“我的”页面


http://www.kler.cn/a/507913.html

相关文章:

  • 云手机技术怎么实现的?
  • salesforce在opportunity的opportunity products页面增加一个按钮,可以批量删除products
  • 读取长文本,使用读取底表
  • Chapter1:初见C#
  • Maven 配置本地仓库
  • Freeswitch使用media_bug能力实现回铃音检测
  • 【PowerQuery专栏】PowerQuery 函数之CSV文件处理函数
  • 手机上做笔记的APP工具?有哪些好用的记笔记APP
  • 警惕IDEA 2024版重大Bug问题:LomBok失效、Gradle冲突、Spring Boot启动错误
  • 【Azure 架构师学习笔记】- Azure Function (2) --实操1
  • JVM直击重点
  • 在 Azure 100 学生订阅中新建 Ubuntu VPS 并通过 Docker 部署 pSQL 服务器
  • 加菲工具格式化XML:让数据呈现更清晰
  • Python 文字生成语言,保存为wav格式
  • SQL2000在win10上安装的方法
  • go语言zero框架中在线截图chromedp 设置超限的网页长度
  • 基于matlab的火焰高度求解
  • docker与部署微服务实战
  • Elasticsearch单机安装
  • 重新审视端到端传输协议:从观念到原则
  • Python 字符串分割时 spilt 和 re 效率对比
  • 2021年前端部署的灵魂拷问
  • 快速入门:如何注册并使用GPT
  • 【数据分享】1929-2024年全球站点的逐年平均气温数据(Shp\Excel\无需转发)
  • 每日一题洛谷P1427 小鱼的数字游戏c++
  • cursor重构谷粒商城02——30分钟构建图书管理系统【cursor使用教程番外篇】