小程序 | 黑马商城【未更完--实习去了】

该博客详细记录了使用uni-app开发黑马优购小程序的过程,包括创建tabBar、首页、分类和搜索功能。涉及创建页面、配置网络请求、轮播图、分类导航、楼层区域的实现,并使用Git进行分支管理与合并。
摘要由CSDN通过智能技术生成

黑马优购:起步看这个--------->>>>>> 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

  1. 了解 uni-app
    uni-app 是一个使用 Vue.js 开发所有前端应用的框架。开发者编写一套代码,可发布到 iOS、Android、H5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等多个平台。

    详细的 uni-app 官方文档,请翻阅 https://uniapp.dcloud.net.cn/

  2. 下载 HBuilderX
    uni-app 官方推荐使用 HBuilderX 来开发 uni-app 类型的项目。

    HBuilderX 的官网首页 https://www.dcloud.io/hbuilderx.html

  3. 安装 scss/sass 编译
    为了方便编写样式(例如:),建议安装 插件。插件下载地址:<style lang="scss"></style> scss/sass 编译

    下载 scss/sass : https://ext.dcloud.net.cn/plugin?name=compile-node-sass

  4. 新建uni-app项目
    模板选择 uni-ui 项目

  5. 了解目录结构
    在这里插入图片描述

  6. 把项目运行到微信开发者工具(具体看最最最最上面👆链接)

  7. 使用 Git 管理项目

  8. 把项目托管到码云(生成公钥)
    我的公钥存放位置:
    在这里插入图片描述
    生成并配置公钥后可在powershell中运行 ssh -t git@gitee.com 监测公钥是否配置成功

    在这里插入图片描述
    将本地项目上传到码云对应的空白仓库中(通过SSH)
    在这里插入图片描述

tabBar

在这里插入图片描述

创建 tabBar 分支

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

git checkout -b tabbar

在这里插入图片描述

创建 tabBar 页面

在 目录中,创建首页(home)分类(cate)购物车(cart)我的(my) 这 4 个 tabBar 页面。

在 HBuilderX 中,可以通过如下的两个步骤,快速新建页面:pages

  1. 在 目录上鼠标右键,选择新建页面pages
    在这里插入图片描述

  2. 在弹出的窗口中,填写页面的名称、勾选 scss 模板之后,点击创建按钮。截图如下:
    在这里插入图片描述

配置 tabBar 效果

  1. 将 资料 目录下的 static 文件夹(用来存放静态资源) 拷贝一份,替换掉项目根目录中的 static 文件夹

  2. 修改项目根目录中的pages.json 配置文件,新增 tabBar的配置节点如下:

    在这里插入图片描述

删除默认的 index 首页

如果要展示 tabbar

  1. 在 HBuilderX 中,把pages 目录下的index首页文件夹 删除掉

  2. 同时,把 page.json中记录的 index 首页路径删除掉

在这里插入图片描述

修改导航条的样式效果

在这里插入图片描述

  1. 打开 pages.json这个全局的配置文件

  2. 修改globalStyle 节点如下:

// 与 tabBar 和 pages 平齐
  "globalStyle": {
   
    "navigationBarTextStyle": "black",
    "navigationBarTitleText": "来买鲜花吧",
    "navigationBarBackgroundColor": "#ffc0cb",
    "backgroundColor": "#F8F8F8",
    "app-plus": {
   
      "background": "#efeff4"
    }
  }
  • 头部导航栏标题不显示的原因

其中navigationBarTitleText默认为空,所以此时在globalStyle中的全局配置会被覆盖,即navigationBarTitleText不会生效
我们只需要删除掉就好
在这里插入图片描述

分支的提交与合并

先把tabbar 推送到远程仓库,然后把tabbar 和 master 合并,再把master 重新推送一遍

  1. 将本地的 tabbar 分支进行本地的 commit 提交:
    git add .
    git commit -m "完成了 tabBar 的开发"
  2. 将本地的 tabbar 分支推送到远程仓库进行保存:
    git push -u origin tabbar
  3. 将本地的 tabbar 分支合并到本地的 master 分支:
    git checkout master 切换到master分支
    git merge tabbar 合并分支
  4. 重新推送 master 分支
    git push
  5. 删除本地的 tabbar 分支:
    git branch -d tabbar

首页

1. 创建 home 分支

运行如下的命令,基于 master 分支在本地创建 home 子分支,用来开发和 home 首页相关的功能:

git checkout -b home 创建分支

在这里插入图片描述

2. 配置网络请求

由于平台的限制,小程序项目中不支持 axios,而且原生的 wx.request() API 功能较为简单,不支持拦截器等全局定制的功能。因此,建议在 uni-app 项目中使用 @escook/request-miniprogram 第三方包发起网络数据请求。

请参考 @escook/request-miniprogram 的官方文档进行安装、配置、使用

⭐官方文档:https://www.npmjs.com/package/@escook/request-miniprogram

  1. 安装在这里插入图片描述
    Shift+鼠标右键 打开终端

    npm init -y 初始化package.json 文件

    npm i @escook/request-miniprogram进行安装

  2. 在 main.js 入口文件中进行导入

    // 按需导入 $http 对象
    import {
          $http } from '@escook/request-miniprogram'
    
    // 将按需导入的 $http 挂载到 wx 顶级对象之上,方便全局调用
    wx.$http = $http
    
    // 在 uni-app 项目中,可以把 $http 挂载到 uni 顶级对象之上,方便全局调用
    uni.$http = $http
    

    在这里插入图片描述

  3. 使用
    在这里插入图片描述

配置请求根路径,请求拦截器和响应拦截器

// main.js
	// 请求根路径
	$http.baseUrl = "https://www.uinav.com"
	// 请求拦截器
	$http.beforeRequest = function(options){
   
	  // 展示loading效果
	  uni.showLoading({
   
	    title:"数据加载中..."
	  })
	}
	// 响应拦截器
	$http.afterRequest = function(options){
   
	  // 隐藏loading效果
	  uni.hideLoading();
	}

封装uni.$showMsg() 方法

当数据请求失败之后,经常需要调用 uni.showToast({ /* 配置对象 */ })方法来提示用户。

此时,可以在全局封装一个 uni.$showMsg()方法,来简化 uni.showToast()方法的调用。

  1. main.js中,为 uni对象挂载自定义的$showMsg() 方法:
// 封装的展示消息提示的方法
uni.$showMsg = function (title = '数据加载失败!', duration = 1500) {
   
  uni.showToast({
   
    title,
    duration,
    icon: 'none',
  })
}
  1. 今后,在需要提示消息的时候,直接调用 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
}

3. 轮播图区域

在这里插入图片描述

获取轮播图的数据

请求路径:https://www.uinav.com/api/public/v1/home/swiperdata
请求方法:GET
无参数

实现步骤:

  1. 在 data 中定义轮播图的数组

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

  3. 在 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">
          <!-- 动态绑定图片的src属性 -->
          <image :src="item.image_src" mode=""></image>
        </view>
      </swiper-item>
    </swiper>

配置小程序分包

在小程序中,我们可以把 tabBar 相关的 4 个页面放到主包中,其它页面(例如:商品详情页、商品列表页)放到分包中

分包步骤:

  1. 在项目根目录中,创建分包的根目录,命名为subpkg

  2. pages.json中,和pages 节点平级的位置声明 subPackages节点,用来定义分包相关的结构,然后点击保存!!再进行下一步骤
    在这里插入图片描述

  3. subpkg目录上鼠标右键,点击 新建页面 选项,并填写页面的相关信息
    在这里插入图片描述

  4. 创建完后会自动生成
    在这里插入图片描述

点击轮播图跳转到商品详情页面

<swiper-item></swiper-item>节点内的view 组件,改造为 navigatorurl导航组件,并动态绑定 url属性的值。

    <!-- 轮播图的区域 -->
    <swiper :indicator-dots="true" :autoplay="true" :interval="3000" :duration="1000">
      <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">
          <!-- 动态绑定图片的src属性 -->
          <image :src="item.image_src" mode=""></image>
        </navigator>
      </swiper-item>
    </swiper>

4. 分类导航区域

在这里插入图片描述

获取首页分类选项数据
请求路径:[https://www.uinav.com]/api/public/v1/home/catitems
请求方法:GET
无参数

获取数据

实现思路:

  1. 定义 data 数据

  2. onLoad 中调用获取数据的方法

  3. methods 中定义获取数据的方法

export default {
   
  data() {
   
    return {
   
        // 分类导航的数据列表
        navList
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值