初始uni-app+tabBar+首页

  • 1. uni-app
    • 1.1 新建uni-app项目
    • 1.2 目录结构
    • 1.3 把项目配置运行到微信开发者工具
  • 2. tabBar
  • 3.1 首页
    • 3.1 配置网络请求
    • 3.2 轮播图区域
    • 3.3 分类导航区域
    • 3.4 楼层区域

1. uni-app

​ uni-app 是使用 Vue.js 开发前端应用的框架。开发者编写一套代码,可以发布到ios、Android、H5、以及各种小程序、快应用等多个平台。

在这里插入图片描述

1.1 新建uni-app项目

  • HBuilder X 创建 uni-app项目(可以用别的),版本 4.66
  • 文件 --> 新建 --> 项目
    • 画横线的可以个性化设置

在这里插入图片描述

1.2 目录结构

一个uni-app项目,默认包晗如下目录及文件:

|- pages				业务页面文件存放的目录
|	|- index
|	|	|_ indxe.vue	index页面
|	|_ list
|		|_				list页面
|- static				存放应用静态资源(如图片、视频等)的目录
|- main.js				Vue初始化入口文件
|- App.vue				应用配置,用来配置小程序的全局样式、生命周期函数等
|- manifext.json		配置应用名称、appid、logo、版本等打包信息
|- pages.json			配置页面路径、页面窗口样式、tabBar、navigationBar 等页面信息

1.3 把项目配置运行到微信开发者工具

  1. 填写 微信小程序 AppID

  1. 配置 微信开发者工具 的安装路径

  1. 在微信开发者者工具中,通过 设置-> 安全设置面板,开启 服务端口

  1. 点击菜单栏中的 运行 -> 运行到小程序模拟器 -> 微信开放工具

2. tabBar

​ 在 pages创建 目录。

  • 在pages.json 配置文件中新增 tabBar的配置节点

    //例"tabBar": {"selectedColor": "#C00000", 					  //配置当前tabBar页的文本颜色"list": [{"pagePath": "pages/home/home",				 //页面路径"text": "首页",							    // 页面文本"iconPath": "/static/home.png",			     // 未选中的图片"selectedIconPath": "/static/home-active.png" //选中的土建}]
    }
    
  • 修改导航条的样式效果,在 pages.json 中修改 globalStyle

    "globalStyle": {"navigationBarTextStyle": "white", 				//标题文本颜色 		"navigationBarTitleText": "人民商城",			 //标题文本"navigationBarBackgroundColor": "#C00000",	    // 导航栏背景颜色"backgroundColor": "#F8F8F8",					//窗口的背景颜色}
    

3.1 首页

3.1 配置网络请求

​ 因平台限制,小程序项目中不支持 axios,原生的 wx.request() API buzhichi l拦截器等全局定制功能。所以在 uni-app 项目中使用 @escook/request-miniprogram 第三方包发起网络请求。官方文档

配置@escook/request-miniprogram (可以看官方文档):

npm init -ynpm install @escook/request-miniprogram

在项目的 main.js 入口文件文件中,配置:

// 导入网络请求包
import { $http } from '@escook/request-miniprogram'// 挂载到 uni 全局对象上
uni.$http = $http// 设置 base URL
$http.baseUrl = '自己的URL'// 请求拦截器
$http.beforeRequest = function(options) {uni.showLoading({title: '数据加载中...'})
}// 响应拦截器
$http.afterRequest = function() {uni.hideLoading()//关闭拦截器
}

3.2 轮播图区域

  • 请求轮播图数据

    • 在data中定义轮播图数组

    • 在 onLoad生命周期函数中调用获取轮播图数据的方法

    • 在 methods 中定义获取轮播图数据方法

      export default {data() {return {//这是轮播图的数据列表swiperList: []};},onLoad() {//调用方法, 获取轮播图的数据this.getSwiperList()},methods: {async getSwiperList() {const {data: res} = await uni.$http.get('URL路径')if (res.meta.status !== 200) return uni.$showMsg()this.swiperList = res.message}}}
      
  • 渲染轮播图的 UI 结构

    <!-- 轮播图的区域 -->
    <swiper :indicator-dots="true"   <!-- 显示面板指示点(小圆点) -->:autoplay="true"         <!-- 开启自动播放 -->:interval="3000"         <!-- 自动播放间隔时间为 3000 毫秒(即 3 秒) -->:duration="1000"         <!-- 滑动动画持续时间为 1000 毫秒(即 1 秒) -->:circular="true"         <!-- 启用无缝循环轮播 -->
    ><!-- 使用 v-for 循环渲染每个轮播项 --><swiper-item v-for="(item, i) in swiperList" :key="i"><!-- 每个轮播项是一个导航链接,点击跳转到商品详情页 --><navigator class="swiper-item" :url="'/subpkg/goods_detail/goods_detail?goods_id=' + item.goods_id"open-type="navigate"  <!-- 默认跳转方式为普通导航 -->><!-- 展示轮播图片 --><image :src="item.image_src"></image></navigator></swiper-item>
    </swiper>
    
  • 配置小程序分包

    • 在根目录中创建 分包的根目录 ,名为 subpkg (可以自己取名)
    • 在 pages.json 中,和pages节点评级的位置声明 subPackages 节点,用来定义分包相关结构
     "subPackages": [{"root": "subpkg","pages": [{"path" : "goods_detail/goods_detail","style" : {}}]}]
    
    • 根据自己需求自己设置

3.3 分类导航区域

  • 获取分类导航区域

    • 在data中定义轮播图数组

    • 在 onLoad生命周期函数中调用获取轮播图数据的方法

    • 在 methods 中定义获取轮播图数据方法

      export default {data() {return {//分类导航的数据列表navList: []};},onLoad() {this.getNavList()},methods: {async getNavList() {const {data: res} = await uni.$http.get('路径')if (res.meta.status !== 200) return uni.$showMag()this.navList = res.message},navClickHandler(item) {if (item.name === '分类') {uni.switchTab({url: '/pages/cate/cate'})}}}
      
  • 渲染轮播图的 UI 结构

    <!-- 分类导航区域 -->
    <view class="nav-list"><!-- 使用 v-for 循环渲染每个分类导航项 --><view class="nav-item" v-for="(item, i) in navList" :key="i"><!-- 每个分类导航项包含一个图片,点击图片会触发点击事件处理函数 --><image :src="item.image_src" class="nav-img" @click="navClickHandler(item)"></image></view>
    </view>
    

3.4 楼层区域

  • 获取楼层区域

    • 在data中定义轮播图数组

    • 在 onLoad生命周期函数中调用获取轮播图数据的方法

    • 在 methods 中定义获取轮播图数据方法

      export default {data() {return {//楼层的数据floorList: []};},onLoad() {this.getFloorList()},methods: {async getFloorList() {const {data: res} = await uni.$http.get('自己路径')if (res.meta.status !== 200) return uni.$showMag()//对数据进行处理res.message.forEach(floor => {floor.product_list.forEach(prod => {//通过 split('?') 方法分割字符串,获取查询参数部分,并将其拼接到自定义的基础路径后prod.url = '/subpkg/goods_list/goods_list?' + prod.navigator_url.split('?')[1]})})this.floorList = res.message}}
      
  • 渲染轮播图的 UI 结构

    <!-- 楼层区域 -->
    <view class="floor-list"><!-- 每个楼层 item 项 --><view class="floor-item" v-for="(item, i) in floorList" :key="i"><!-- 楼层标题图片 --><image :src="item.floor_title.image_src" class="floor-title"></image><!-- 楼层的图片展示区域 --><view class="floor-img-box"><!-- 左侧大图盒子 --><navigator class="left-img-box" :url="item.product_list[0].url"><!-- 显示第一个商品的大图,并根据 image_width 设置宽度 --><image :src="item.product_list[0].image_src" :style="{width: item.product_list[0].image_width + 'rpx'}"mode="widthFix"></image></navigator><!-- 右侧 4 张小图的盒子 --><view class="right-img-box"><!-- 循环渲染 product_list 中的商品(除第一个) --><navigator class="right-img-item" v-for="(item2, i2) in item.product_list" :key="i2" :url="item2.url"><!-- 只渲染 index 不为 0 的项(即跳过第一个商品) --><image :src="item2.image_src" v-if="i2 !== 0":style="{width: item2.image_width + 'rpx'}" mode="widthFix"></image></navigator></view></view></view>
    </view>
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/85209.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/85209.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/85209.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序,微信授权手机号码

uniapp中index.vue: <template><view class"content"><button open-type"getPhoneNumber" getphonenumber"getPhoneNumber"type"primary">授权手机号登录 </button></view></template><scrip…

数据结构 学习 图 2025年6月14日 12点57分

搜索算法 深度优先搜索 一种用于遍历或搜索树或图的算法。它沿着树的深度遍历树的节点&#xff0c;尽可能深的搜索树的分支。 DFS核心思想 深度优先&#xff1a;尽可能深地搜索树的分支 回溯思想&#xff1a;当节点v的所在边都已被探寻过&#xff0c;搜索将回溯到发现节点v的…

H3C路由器使用PBR 实现两条互联网专线互为备份

实验拓扑 图 1-1 注&#xff1a;如无特别说明&#xff0c;描述中的 R1 或 SW1 对应拓扑中设备名称末尾数字为 1 的设备&#xff0c;R2 或 SW2 对应拓扑中设备名称末尾数字为 2 的设备&#xff0c;以此类推&#xff1b;另外&#xff0c;同一网段中&#xff0c;IP 地址的主机位为…

深化信创生态布局!聚铭网络与海量数据完成产品兼容性互认证

近日&#xff0c;聚铭网络成功与海量数据完成了一系列产品的兼容性互认证&#xff0c;并获得了由海量数据颁发的产品兼容互认证书。这一成就标志着双方在技术整合方面迈出了重要一步。 经过全面严格的测试&#xff0c;聚铭网络自主研发的安全系列产品&#xff0c;包括聚铭下一…

Unity AR+ 百度AI 实现 物体识别与对应英文翻译

一、前言 我目前实现了拍照保存到手机的功能 我想进一步优化&#xff0c;实现通过手机摄像头实时识别眼前的物体&#xff0c;显示对应的英文的功能。 1.项目技术栈&#xff1a;Unity 2022.3.53 Vuforia 11 百度物体识别API 百度翻译API 2.功能目标&#xff1a;使用手机摄像…

Vue.js第二节

计算属性、事件绑定、条件判断、遍历循环 计算属性&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">…

从开源代码入场无人机学术研究到商业化市场的全路径指南-优雅草卓伊凡

从开源代码入场无人机学术研究到商业化市场的全路径指南-优雅草卓伊凡 引言&#xff1a;开源代码在无人机研究中的重要性 优雅草卓伊凡在这里告诉大家&#xff0c;如果真的要开始进入无人机领域&#xff0c;我们需要一步步开始研究。目前先去看看开源无人机代码是尤为重要的&…

window11中开启ubuntu22.04子系统

一、启用Windows子系统 打开控制面板 选择程序然后点击“启用或关闭Windows功能” 勾选如下2项&#xff0c;点击确定 二、安装内核升级包 打开链接https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi下载内核升级包&#xff0c;打开后安装、重启电脑…

80Qt窗口_对话框

目录 5. 对话框 5.1 对话框介绍 用例1&#xff1a; 用例2&#xff1a; 用例3&#xff1a; 用例4&#xff1a; 5.2 对话框的分类 5.2.1 模态对话框 5.2.2 ⾮模态对话框 5. 对话框 5.1 对话框介绍 对话框是 GUI 程序中不可或缺的组成部分。⼀些不适合在主窗⼝实现的功…

Pyenv 跟 Conda 还有 Poetry 有什么区别?各有什么不同?

pyenv、Conda 和 Poetry 是 Python 生态中常用的工具&#xff0c;但它们的核心功能和用途不同&#xff0c;通常可以结合使用。以下是它们的区别和特点&#xff1a; 1. pyenv 用途&#xff1a;管理多个 Python 解释器版本。 核心功能&#xff1a; 安装不同版本的 Python&#x…

数学符号和标识中英文列表(含义与示例)

数学符号和标识的参考&#xff0c;涵盖了数学的各个主要分支&#xff0c;并提供清晰的定义和示例&#xff0c;方便快速查找和学习收藏。 目录 基础数学符号几何符号代数符号线性代数符号概率与统计符号集合论符号逻辑符号微积分与分析符号数字与字母符号 特点 中英对照&…

「Java流程控制」switch结构

知识点解析 1.switch结构的核心概念 switch语句是一种多分支选择结构,它根据表达式的值来选择执行不同的代码块。与if-else结构相比,switch更适合处理离散的、有限个值的比较。 2.switch结构的基本语法 switch (表达式) {case 值1:// 代码块1[break;]case 值2:// 代码块…

从0开始学习R语言--Day27--空间自相关

有的时候&#xff0c;我们在数据进行分组时&#xff0c;会发现用正常的聚类分析的方法和思维&#xff0c;分组的情况不是很理想。其实这是因为我们常常会忽略一个问题&#xff1a;假设我们正在分析的数据是真实的&#xff0c;那么它也肯定在一定程度上符合客观规律。而如果我们…

Excel将表格文件由宽数据转为长数据的方法

本文介绍基于Excel软件的Power Query模块&#xff0c;实现表格数据由宽数据转为长数据的具体方法。 长数据和宽数据是数据分析中的2种基本数据组织形式&#xff0c;二者在结构、用途、适用场景等方面各有特点。其中&#xff0c;宽数据 &#xff08;Wide Format&#xff09;以“…

SpringAI + DeepSeek大模型应用开发 - 入门篇

三、SpringAI Spring AILangChain4jChat支持支持Function支持支持RAG支持支持对话模型1515向量模型1015向量数据库1520多模态模型51JDK178 1. 对话机器人 1.1 快速入门 步骤①&#xff1a;引入依赖&#xff08;先去掉openai的starter依赖&#xff0c;因为要配置API_KEY&#…

ROS docker使用显卡驱动rviz gazebo,以及接入外设和雷达

ROS docker使用显卡驱动rviz gazebo&#xff0c;以及接入外设和雷达 由于我的电脑装ubuntu22.04系统&#xff0c;想使用ros noetic开发&#xff0c;使用鱼香ros一键安装docker安装。但是启动dockek中rviz无法使用显卡驱动&#xff0c;usb相机端口不显示&#xff0c;网口雷达无…

ruoyi后端框架的mapper层复杂字段数据获取问题

背景。如下是复杂字段。需要在mapper.java类注解中声明autoResultMap true才会进行处理。前提是&#xff0c;创建后端程序代码没有添加mapp.xml文件。故用注解简化代替。

产品推荐|一款具有单光子级探测能力的科学相机千眼狼Gloria 1605

在生命科学超分辨率成像、量子物理单光子探测、交叉领域单分子追踪等应用场景中&#xff0c;具有单光子级探测能力的科学相机是科学实验的关键设备。 千眼狼Gloria 1605采用16μm16μm大像元尺寸设计&#xff0c;基于Gpixel科学级背照式CMOS芯片&#xff0c;集成千眼狼底层图像…

JS.Day2-堆选(Py)/三路快排-快速选择-215,11,560,21,128,20,121

目录 215.找第k大元素 三路的快速排序 快速选择 法2.堆选 &#xff08;堆排序&#xff09; 11.盛更多水的容器 代码1 代码2 560.和为K的子数组&#xff08;题意&#xff01;&#xff09; 惯性思维 正解 21.合并生序链表 递归写法 128.最长连续序列 20.有效的括号…

第8章 处理几何图形 面向 ArcGIS的Python脚本编程

一、折点坐标(.txt 或 .xlsx 或 .xls) > 点线面图层(.shp) &#xff08;一&#xff09;.xlsx 或 .xls > .shp 新建一个文件夹&#xff0c;连接到该文件夹&#xff0c;并将其设置为工作空间 在该文件夹下&#xff0c;新建一个pts.xlsx的文件&#xff0c;并输入下图内容 …