119.【Uniapp】(四)

简介: 119.【Uniapp】
(4).配置小程序分包

分包可以减少小程序首次启动时的加载时间

为此,我们在项目中,把 tabBar 相关的 4 个页面放到主包中,其它页面(例如:商品详情页、商品列表页)放到分包中。在 uni-app 项目中,配置分包的步骤如下:

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

  2. 在 pages.json 中,和 pages 节点平级的位置声明subPackages节点,用来定义分包相关的结构:
// 配置分包 ⭐
  "subPackages": [{
    "root": "subpkg", //指定分包的根路径在那
    "pages": [ //配置在这个根路径下 有几个分包..
      xxxx
    ]
  }],

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

(5).点击轮播图跳转到商品的详情页面

将节点内的view组件,改造为 navigator导航组件,并动态绑定 url属性的值。

1. 改造之前的UI界面

home.vue

<template>
  <view>
    <!-- 轮播图的区域  快捷键 usw -->
    <swiper :indicator-dots="true" :autoplay="true" :interval="3000" :duration="1000" :circular="true">
      <swiper-item v-for="(item,index) in  swiperList" :key="index">
        <!-- 利用Vue的语法操作, v-bind:src='xx' :src='xx' -->
        <image :src="item.image_src" mode="widthFix"></image>
      </swiper-item>
    </swiper>
  </view>
</template>

2.改造之后的UI界面

<template>
  <view>
    <!-- 轮播图的区域  快捷键 usw -->
    <swiper :indicator-dots="true" :autoplay="true" :interval="3000" :duration="1000" :circular="true">
      <swiper-item v-for="(item,index) in  swiperList" :key="index">
        <!-- 利用Vue的语法操作, v-bind:src='xx' :src='xx' -->
        <navigator class="swiper-item" :url="'/subpkg/goods_detail/goods_detail?goods_id='+item.goods_id">
          <image :src="item.image_src" mode="widthFix"></image>
        </navigator>
      </swiper-item>
    </swiper>
  </view>
</template>

运行之后的结果是:

(6).分装uni.$showMsg()方法

当数据请求失败之后,经常需要调用uni.showToast({配置对象})方法来提示用户。此时,可以在全局封装一个 uni.$showMsg()方法,来简化uni.showToast()方法的调用。具体的改造步骤如下:

1.在main.js中,为uni对象挂载自定义的 $showMsg()方法:

为uni挂载一个方法。调用的方式是 : uni.$showMsg

原有的方法是:

uni.showToast({
            title: '数据请求失败',
            duration: 1500,
            icon: 'error'
          })

改造之后的方法

// 封装的展示消息提示的方法
uni.$showMsg = function (title = '数据加载失败!', duration = 1500) {
  uni.showToast({
    title,
    duration,
    icon: 'none',
  })
}

(7).分类导航区域 💱
  1. 获取分类导航的区域

实现思路:

  1. 定义data数据。
  2. 在onLoad区域挂载调用获取的方法。
  3. 在methods区域获取数据的方法。

home.vue

// 分类导航区
      async getNavList() {
        const {
          data: res
        } = await uni.$http.get('/api/public/v1/home/catitems')
        console.log('分类导航区->', res)
        if (res.meta.status == 200) {
          this.navList = res.message
        } else {
          uni.$showMsg()
        }
      }
<template>
  <view>
    <!-- 轮播图的区域  快捷键 usw -->
    <swiper :indicator-dots="true" :autoplay="true" :interval="3000" :duration="1000" :circular="true">
      <swiper-item v-for="(item,index) in  swiperList" :key="index">
        <!-- 利用Vue的语法操作, v-bind:src='xx' :src='xx' -->
        <navigator class="swiper-item" :url="'/subpkg/goods_detail/goods_detail?goods_id='+item.goods_id">
          <image :src="item.image_src" mode="widthFix"></image>
        </navigator>
      </swiper-item>
    </swiper>
  </view>
</template>
<script>
  export default {
    data() {
      return {
        // 轮播图的数据节点
        swiperList: [],
        // 分类导航栏的数据列表
        navList: []
      };
    },
    onLoad() {
      this.getSwiperList()
      this.getNavList()
    },
    methods: {
      // 首页轮播图***
      async getSwiperList() {
        // 通过花括号结构对象,以key:value的形式赋值。引用数据类型赋值穿的是对象的内存地址,该变量可以指向目标对象 {data :res} 将 响应结果的data赋值给res
        const {
          data: res
        } = await uni.$http.get('/api/public/v1/home/swiperdata')
        console.log('首页轮播图->', res)
        if (res.meta.status == 200) { // 假如说返回的状态码为 200 说明成功
          this.swiperList = res.message
        } else {
          // 正常调用弹窗应该用的是wx 但是在uniapp看i面我们推荐使用 uni
          uni.$showMsg()
        }
      },
      // 分类导航区
      async getNavList() {
        const {
          data: res
        } = await uni.$http.get('/api/public/v1/home/catitems')
        console.log('分类导航区->', res)
        if (res.meta.status == 200) {
          this.navList = res.message
        } else {
          uni.$showMsg()
        }
      }
    }
  }
</script>
<style lang="scss">
  swiper {
    height: 330rpx;
    // 这个意思就是在 swiper里面有一个类名叫做 swiper-item和一个image标签进行操作
    .swiper-item,
    image {
      width: 100%;
      height: 100%;
    }
  }
</style>
  1. 渲染分类的导航区域

home.vue

// 分类导航的样式
  .nav-list {
    display: flex; // 分布在一行
    justify-content: space-around;
    margin: 30rpx 0;
    .nav-img {
      width: 120rpx;
      height: 140rpx;
    }
  }
<!-- 分类的导航区域 -->
    <view class="nav-list">
      <view v-for="(item,index) in navList" :key="index" class="nav-item">
        <image :src="item.image_src" class="nav-img"></image>
      </view>
    </view>

(8).点击第一项跳转到分类页面
  1. 为nav-item绑定点击事件处理函数
<view class="nav-list">
      <view v-for="(item,index) in navList" :key="index" class="nav-item">
        <!-- 编写点击事件 并->传递每行的item这个项 -->
        <image :src="item.image_src" class="nav-img" @click="navClickHandler(item)"></image>
      </view>
    </view>

2.定义事件处理函数

switchTab 这个函数是切换到 tabbar标签页的

// 分类点击图片事件
      navClickHandler(item) {
        if (item.name === '分类') {
          uni.switchTab({
            url: '/pages/cate/cate'
          })
        }
      }


相关文章
|
小程序 Android开发 网络架构
uni-app中使用scroll-view滚到底部时多次触发scrolltolower
uni-app中使用scroll-view滚到底部时多次触发scrolltolower
2017 0
uni-app中使用scroll-view滚到底部时多次触发scrolltolower
|
编译器 定位技术 API
|
JSON 前端开发 JavaScript
前端常用的加密方式
前端常用的加密方式
587 0
|
5月前
|
人工智能 测试技术 Shell
Claude Code 用了两周后,我发现它最强的不是写代码
Claude Code 不是普通AI编程助手,它深度融入终端工作流:读项目、跑测试、分析报错、看diff、管提交、记规则(CLAUDE.md)。它不只补代码,而是参与完整工程链路——从需求理解到文档沉淀。真正价值在于“工程化协作”,而非局部辅助。
|
7月前
|
人工智能 Shell Python
【从零手写 ClaudeCode:learn-claude-code 项目实战笔记】(4)Subagents (子智能体)
本文介绍AI Agent开发中的子智能体(Subagent)模式。通过将复杂任务外包给临时子智能体处理,只返回最终摘要,避免上下文污染。父智能体保持干净对话,子智能体拥有独立上下文,完成任务后立即销毁,实现高效的任务分工和上下文管理。
1488 3
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
5341 1
|
JSON 小程序 前端开发
towxml的使用,在微信小程序中快速将markdown格式渲染为wxml文本
本文介绍了在微信小程序中使用`towxml`库将Markdown格式文本渲染为WXML的方法。文章提供了`towxml`的概述、安装步骤、以及如何在小程序中配置和使用`towxml`进行Markdown解析的详细说明和代码示例。
|
存储 JavaScript
js切割截取字符串方法
js切割截取字符串方法
623 2
|
小程序 前端开发 UED
详细讲解uniapp转小程序分包教程!!!
详细讲解uniapp转小程序分包教程!!!