黑马优购:起步看这个--------->>>>>> https://www.escook.cn/docs-uni-shop/
⭐uni-app 品优购 开发文档
https://www.escook.cn/docs-uni-shop/#tabbar-%E7%9B%B8%E5%85%B3%E7%9A%84%E9%A1%B5%E9%9D%A2
了解 uni-app
uni-app 是一个使用 Vue.js 开发所有前端应用的框架。开发者编写一套代码,可发布到 iOS、Android、H5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等多个平台。
详细的 uni-app 官方文档,请翻阅 https://uniapp.dcloud.net.cn/
下载 HBuilderX
uni-app 官方推荐使用 HBuilderX 来开发 uni-app 类型的项目。
HBuilderX 的官网首页 https://www.dcloud.io/hbuilderx.html
安装 scss/sass 编译
为了方便编写样式(例如:),建议安装 插件。插件下载地址: scss/sass 编译
下载 scss/sass : https://ext.dcloud.net.cn/plugin?name=compile-node-sass
新建uni-app项目
模板选择 uni-ui 项目
了解目录结构

把项目运行到微信开发者工具(具体看最最最最上面👆链接)
使用 Git 管理项目
把项目托管到码云(生成公钥)
我的公钥存放位置:

生成并配置公钥后可在powershell中运行 ssh -t git@gitee.com 监测公钥是否配置成功

将本地项目上传到码云对应的空白仓库中(通过SSH)


运行如下的命令,基于 master 分支在本地创建 tabBar 子分支,用来开发和 tabBar 相关的功能:
git checkout -b tabbar

在 目录中,创建首页(home)、分类(cate)、购物车(cart)、我的(my) 这 4 个 tabBar 页面。
在 HBuilderX 中,可以通过如下的两个步骤,快速新建页面:pages
在 目录上鼠标右键,选择新建页面pages

在弹出的窗口中,填写页面的名称、勾选 scss 模板之后,点击创建按钮。截图如下:

将 资料 目录下的 static 文件夹(用来存放静态资源) 拷贝一份,替换掉项目根目录中的 static 文件夹
修改项目根目录中的pages.json 配置文件,新增 tabBar的配置节点如下:

如果要展示 tabbar
在 HBuilderX 中,把pages 目录下的index首页文件夹 删除掉
同时,把 page.json中记录的 index 首页路径删除掉


打开 pages.json这个全局的配置文件
修改globalStyle 节点如下:
// 与 tabBar 和 pages 平齐
"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "来买鲜花吧",
"navigationBarBackgroundColor": "#ffc0cb",
"backgroundColor": "#F8F8F8",
"app-plus": {
"background": "#efeff4"
}
}
- 头部导航栏标题不显示的原因
其中
navigationBarTitleText默认为空,所以此时在globalStyle中的全局配置会被覆盖,即navigationBarTitleText不会生效
我们只需要删除掉就好
先把tabbar 推送到远程仓库,然后把tabbar 和 master 合并,再把master 重新推送一遍
git add .git commit -m "完成了 tabBar 的开发"git push -u origin tabbargit checkout master 切换到master分支git merge tabbar 合并分支git pushgit branch -d tabbar运行如下的命令,基于 master 分支在本地创建 home 子分支,用来开发和 home 首页相关的功能:
git checkout -b home 创建分支

由于平台的限制,小程序项目中不支持 axios,而且原生的 wx.request() API 功能较为简单,不支持拦截器等全局定制的功能。因此,建议在 uni-app 项目中使用 @escook/request-miniprogram 第三方包发起网络数据请求。
请参考 @escook/request-miniprogram 的官方文档进行安装、配置、使用
⭐官方文档:https://www.npmjs.com/package/@escook/request-miniprogram
安装
Shift+鼠标右键 打开终端
npm init -y 初始化package.json 文件
npm i @escook/request-miniprogram进行安装
在 main.js 入口文件中进行导入
// 按需导入 $http 对象
import {
$http } from '@escook/request-miniprogram'
// 将按需导入的 $http 挂载到 wx 顶级对象之上,方便全局调用
wx.$http = $http
// 在 uni-app 项目中,可以把 $http 挂载到 uni 顶级对象之上,方便全局调用
uni.$http = $http

使用

// main.js
// 请求根路径
$http.baseUrl = "https://www.uinav.com"
// 请求拦截器
$http.beforeRequest = function(options){
// 展示loading效果
uni.showLoading({
title:"数据加载中..."
})
}
// 响应拦截器
$http.afterRequest = function(options){
// 隐藏loading效果
uni.hideLoading();
}
当数据请求失败之后,经常需要调用 uni.showToast({ /* 配置对象 */ })方法来提示用户。
此时,可以在全局封装一个 uni.$showMsg()方法,来简化 uni.showToast()方法的调用。
main.js中,为 uni对象挂载自定义的$showMsg() 方法:// 封装的展示消息提示的方法
uni.$showMsg = function (title = '数据加载失败!', duration = 1500) {
uni.showToast({
title,
duration,
icon: 'none',
})
}
uni.$showMsg()方法即可:async getSwiperList() {
const {
data: res } = await uni.$http.get('/api/public/v1/home/swiperdata')
if (res.meta.status !== 200) return uni.$showMsg()
this.swiperList = res.message
}

请求路径:https://www.uinav.com/api/public/v1/home/swiperdata
请求方法:GET
无参数
实现步骤:
在 data 中定义轮播图的数组
在 onLoad 生命周期函数中调用获取轮播图数据的方法
在 methods 中定义获取轮播图数据的方法

获取轮播图数据的方法:
methods: {
async getSwiperList() {
// 发请求获取数据
const {
data} = await uni.$http.get('/api/public/v1/home/swiperdata') // {}解构赋值
if(data.meta.status === 200){
// 获取数据成功,开始赋值
this.swiperList = data.message;
}else{
// 请求失败,展示提示消息 uni.showToast
return uni.showToast({
title:"轮播图数据请求失败",
duration:1500, // 1.5s后隐藏
icon:'none'
})
}
}
}
}
请求回来的数据:


利用 v-for循环来遍历数据
<swiper :indicator-dots="true" :autoplay="true" :interval="3000" :duration="1000">
<swiper-item v-for="(item,i) in swiperList" :key="i">
<view class="swiper-item">
<image :src="item.image_src" mode="">image>
view>
swiper-item>
swiper>
在小程序中,我们可以把 tabBar 相关的 4 个页面放到主包中,其它页面(例如:商品详情页、商品列表页)放到分包中
分包步骤:
在项目根目录中,创建分包的根目录,命名为subpkg
在 pages.json中,和pages 节点平级的位置声明 subPackages节点,用来定义分包相关的结构,然后点击保存!!再进行下一步骤

在subpkg目录上鼠标右键,点击 新建页面 选项,并填写页面的相关信息

创建完后会自动生成

将 节点内的view 组件,改造为 navigatorurl导航组件,并动态绑定 url属性的值。
<swiper :indicator-dots="true" :autoplay="true" :interval="3000" :duration="1000">
<swiper-item v-for="(item,i) in swiperList" :key="i">
<navigator