当前位置: 首页 > 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>
    

相关文章:

  • 第八节:Vben Admin 最新 v5.0 (vben5) 快速入门 - 用户管理(下)
  • 【redis】安装与使用
  • Unity 在Scroll View内连续截图并保存本地(把滚动列表内的内容截成一个长图)
  • 自然语言处理【NLP】—— CBOW模型
  • JavaEE->多线程1
  • Vue + Spring Boot 前后端交互实践:正确使用 `Content-Type: application/json` 及参数传递方式
  • SonarQube 25.6 完整指南:部署、使用与 CI/CD 集成
  • 【深度学习】TensorFlow全面指南:从核心概念到工业级应用
  • FPGA基础 -- Verilog语言要素之变量类型
  • JavaSE - Object 类详细讲解
  • C/C++中的位域(Bit-field)是什么?
  • 自然语言处理(NLP)核心技术:从词嵌入到Transformer
  • SSM框架:企业级Java开发利器
  • 【CUDA编程】OptionalCUDAGuard详解
  • 秋招是开发算法一起准备,还是只准备一个
  • 6.IK分词器拓展词库
  • 利用Tomcat本地部署Javaweb项目(windows)
  • 从CentOS迁移到TencentOS:9%成功率的一键替换实操
  • CppCon 2016 学习:The Exception Situation
  • Python编程基础
  • 图书翻页的动画 做网站启动用/深圳seo优化排名公司
  • dz网站后台/百度推广一般多少钱
  • java 的 wordpress/优化大师兑换码
  • html做网站公告/简述网站推广的方法
  • 网站开发市场现在怎么样/国内十大搜索引擎
  • 网站建设重庆/网络市场营销策划书