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

01初始uni-app+tabBar+首页

初始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.lryc.cn/news/571661.html

相关文章:

  • 关于球面投影SphericalProjector的介绍以及代码开发
  • 分治算法之归并排序
  • webpack+vite前端构建工具 - 3webpack处理js
  • 深入ZGC并发处理的原理
  • 固态硬盘的加装和初始化
  • 电路图识图基础知识-摇臂钻床识图(三十一)
  • 27.自连接
  • 你的下一把量化“瑞士军刀”?KHQuant适用场景全解析【AI量化第32篇】
  • 数据集笔记:宣城轨迹
  • 权重遍历及Delong‘s test | 已完成单调性检验?
  • 键盘 AK35I Pro V2 分析
  • ABP vNext + Azure Application Insights:APM 监控与性能诊断最佳实践
  • 零基础设计模式——总结与进阶 - 1. 设计模式的综合应用
  • 利用cpolar实现Talebook数字图书馆的实时访问
  • ZYNQ学习记录FPGA(五)高频信号中的亚稳态问题
  • VMware vSphere Foundation 9.0 技术手册 —— Ⅰ 安装 ESXi 9.0 (虚拟机)
  • 数据库char字段做trim之后查询很慢的解决方式
  • 需要做一款小程序,用来发券,后端如何进行设计能够保证足够安全?
  • 微信原生小程序转uniapp过程及错误总结
  • 环卫车辆定位与监管:安心联车辆监控管理平台--科技赋能城市环境卫生管理
  • 【力扣 中等 C】2. 两数相加
  • chili3d笔记18 出三视图调整
  • 数据结构——选择题—查漏补缺
  • Could not locate zlibwapi.dll. Please make sure it is in your library path!
  • 功耗高?加密弱?爱普特APT32F1023H8S6单片机 2μA待机+AES硬件加密破局
  • Vue3 + TypeScript 本地存储 localStorage 的用法
  • 【时时三省】(C语言基础)内部函数和外部函数
  • Cornerstone3D 2.x升级调研
  • EPLAN P8 2.9 如何使用.step格式3D文件绘制3D安装布局图
  • 用idea操作git缓存区回退、本地库回退、远程库回退