iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >微信小程序--》从零实现小程序项目案例
  • 870
分享到

微信小程序--》从零实现小程序项目案例

微信小程序前端小程序javascript项目 2023-10-12 21:10:27 870人浏览 八月长安
摘要

🏍️作者简介:大家好,我是亦世凡华、渴望知识储备自己的一名在校大学生 🛵个人主页:亦世凡华、 🛺系列专栏:微信小程序 🚲座右铭:人生亦可燃烧,亦可腐败,我愿燃烧,耗尽

🏍️作者简介:大家好,我是亦世凡华、渴望知识储备自己的一名在校大学生

🛵个人主页:亦世凡华、

🛺系列专栏:微信小程序

🚲座右铭:人生亦可燃烧,亦可腐败,我愿燃烧,耗尽所有光芒。

👀引言

       ⚓经过WEB前端开发学习,相信大家对于前端开发有了一定深入的了解,今天我开设了微信小程序专栏,主要想从移动端开发方向进一步发展,而对于我来说写移动端博文的第一站就是小程序开发,希望看到我文章的朋友能对你有所帮助。

目录

配置导航栏

配置tabBar

实现页面轮播图

实现页面九宫格

实现底部图片

实现九宫格的导航跳转

实现导航跳转时设置标题内容

实现商品列表数据的渲染

实现上拉加载以及loading效果

实现数据是否加载完毕的判断

实现下拉刷新功能

实现wxs处理手机号

最终的实现效果


今天借助黑马的本地生活案例,加强一下自己对小程序的学习,并将学习过程分享出来,希望能和以前学习的知识相互印证。现在开始:

配置导航栏

导航栏是小程序的门户,用户进来第一眼看到的便是导航栏,其起着对当前小程序主题的概括。而我们 新建的小程序 时,第一步变开始配置导航栏。如下:

配置tabBar

因为配置tabBar需要借助字体图标,我这里平常喜欢使用阿里云字体图标库,所以需要先去阿里云库中找到相关图标:其官方网站:网站链接

随便找两个,一个作为未点击(未激活)状态,另一个作为已点击(已激活)状态:

因为我是属于类似做一个小demo ,图标就随便选了,在正式项目必须严谨了,选好图标命名如下

准备好图片资源之后就要在 app.JSON 文件中配置tabBar了,配置代码如下:

{  "pages":[    "pages/home/home",    "pages/message/message",    "pages/contact/contact"  ],  "window":{    "backgroundTextStyle":"light",     "navigationBarBackgroundColor": "#008c8c",     "navigationBarTitleText": "本地生活",    "navigationBarTextStyle":"white"  },  "tabBar": {    "list": [{      "pagePath": "pages/home/home",      "text": "首页",      "iconPath": "/images/home.png",      "selectedIconPath": "/images/home-active.png"    },{      "pagePath": "pages/message/message",      "text": "消息",      "iconPath": "/images/message.png",      "selectedIconPath": "/images/message-active.png"    },{      "pagePath": "pages/contact/contact",      "text": "联系我们",      "iconPath": "/images/contact.png",      "selectedIconPath": "/images/contact-active.png"    }]  },  "style": "v2",  "sitemapLocation": "sitemap.json"}

实现页面轮播图

实现轮播图必须有图片资源,而在项目中一般是不会使用本地资源的,都是通过调用接口的形式拿到数据,在本项目中也是,因为轮播图是在 home 组件中进行使用,所有我们需要在home组件去调用接口,具体实现过程如下:

在页面的初始数据data中定义一个数组,用于存放数据:

调用微信的request方法,发起get请求访问接口拿到数据:

// 获取轮播图的方法getSwiperList(){  wx.request({    url: 'https://www.escook.cn/slides',    method:'GET',    success: (res)=>{      // 类似于React中的setState,将状态数据更新      this.setData({        SwiperList: res.data      })    }  })},

在生命周期onLoad,页面刚加载的时候,调用获取轮播图的方法:

在data存放的数据可以在控制台的AppData中看到:

拿到数据之后,我们就可以在wxml中制作页面效果了:

        

属性可以参考我之前的文章:https://z5qyj5pyi.blog.csdn.net/article/details/125829071 ,如下:

给轮播图添加样式,给定宽高并充满两侧:

swiper{  height: 350rpx; }swiper image{  width: 100%;  height: 100%;}

至此轮播图效果已经实现,效果如下:

黑马的这个项目接口,就两张图片感觉有点丑,我自己在网上整了五张好看的小姐姐图片,然后用node搭建了一个本地服务器,然后也写了一个图片的接口,本想轮播小姐姐图片的,如下

换掉小程序之前黑马老师的接口链接,发现报错了,寻找原因原来没有让这个域名合法,好嘛于是登录到小程序的后台添加合法域名,发现报错,寻找原因,原来本地的ip地址不行,如下:

好嘛,之前的买的服务器已经到期了。。。只能这样了,看不了小姐姐了,哈哈,一个小插曲。

实现页面九宫格

和实现轮播图一样,也是需要调用接口,然后渲染到页面上,如下:

获取九宫格的数据:

// 获取九宫格数据的方法getGridList(){  wx.request({    url: 'https://www.escook.cn/categories',    method:'GET',    success: (res)=>{      this.setData({        gridList:res.data      })    }  })},

在页面刚渲染的时候,调用获取九宫格的方法:

在wxml页面上对接口获取到的数据进行渲染:

          {{item.name}}  

给获取到的数据添加样式:

.grid-list{  display: flex;  flex-wrap: wrap;   border-left: 1px solid #efefef;  border-top: 1px solid #efefef;}.grid-item{  width: 33.33%;  height: 200rpx;  display: flex;  flex-direction: column;  align-items: center;   justify-content: center;  border-right: 1px solid #efefef;  border-bottom: 1px solid #efefef;  box-sizing: border-box;}.grid-item image {  width: 60rpx;  height: 60rpx;}.grid-item text{  font-size: 24rpx;  margin-top: 10rpx;}

得到的效果如下:

实现底部图片

可以看到在九宫格的下面还是有很大一片区域的,所有我们需要在下面放置两张图片,一个是商品推荐,另一个是交友论坛,如下:

在wxml中设置图片区域:

    

给图片添加样式:

.img-box{  display: flex;  padding: 20rpx 10rpx;  justify-content: space-around;}.img-box image{  width: 45%;  height: 250rpx;}

最终的结果如下:

实现九宫格的导航跳转

在我们配置好九宫格的样式之后,我们就需要给每个九宫格添加导航路由跳转了,如下:

首先我们需要新创建一个文件夹,里面用来存放九宫格跳转路由时用到数据的组件,如下:

创建好shoplist组件后,将我们之前九宫格的view标签修改为navigator标签,添加url属性,并书写好要跳转组件的路径,并传递参数,进行导航跳转:

           {{item.name}}  

如果不了解导航跳转的原理的朋友,可以看一下我之前的文章:数据请求和页面导航 。结果如下

实现导航跳转时设置标题内容

我们在跳转到shoplist组件时,将我们的id和titile作为query参数传递过去了,在微信的官方文档明确告诉我们在传参过去如何设置标题内容,如下:

那么如何调用 setNavigationBarTitle 呢?官方文档明确告诉我们调用的时机,如下:

ok,这样的话,我们就需要在shoplist组件的js文件进行相关配置了,通过onLoad函数,拿到传递过来的query参数,并将参数更新到data中。

在onReady函数中调用相应api,并从data拿到query的参数值,并渲染到页面,如下:

最后的效果如下:

实现商品列表数据的渲染

实现了标题内容之后,接下来需要实现,在点击相关九宫格选项之后,将相应的标题下的内容进行渲染出来,如下:

根据我们要调用的接口返回来的数据,第一步先在data中初始化数据,如下:

初始完数据之后,就要调用接口拿数据了,将拿到的数据去更新data里面的状态数据,根据我们点击九宫格返回过来的query参数里面的id,来判断我们要拿到哪一个页面的数据,如下:

// 获取商品信息数据getShopList(){  wx.request({    url: `https://www.escook.cn/categories/${this.data.query.id}/shops`,    method:'GET',    data:{//指定要发送给服务器的参数      _page:this.data.page,      _limit:this.data.pageSize    },    success:(res)=>{      this.setData({        shopList:[...this.data.shopList,...res.data], // 新旧数据的拼接        total: res.header['X-Total-Count']-0 // 将字符串转换为数字型      })    }  })},

在生命周期 onLoad ,页面刚加载数据的时候,调用我们获取商品列表信息的函数:

接下来,将我们接口调用的数据渲染到页面上,如下:

                  {{item.name}}    电话:{{item.phone}}    地址:{{item.address}}    营业时间:{{item.businesshours}}  

接下来需要对我们设置的内容样式进行美化,如下:

.shop-item{  display: flex;  padding: 15rpx;  border: 1px solid #efefef;  margin: 15rpx;  border-radius: 8rpx;  box-shadow: 1rpx 1rpx 15rpx #DDD;}.thumb image{  width: 250rpx;  height: 250rpx;  display: block;  margin-right: 15rpx;}.info{  display: flex;  flex-direction: column;  justify-content: space-around;  font-size: 24rpx;}.shop-title{  font-weight: bold;}

ok,具体效果如下:

实现上拉加载以及loading效果

在实现了接口数据渲染到页面之后,接下来要实现上拉加载实现请求多页的数据,如下:

首先,我们需要在shoplist.json文件中,去设置当我们下拉的距离为多少的时候加载第二页数据:

设置,完成之后,我们需要在页面上拉触底事件的处理函数中,对我们之前初始化的page进行+1 ,然后重新调用获取shoplist列表数据的函数,如下:

要知道上拉加载是有一个问题的,在网络不稳定的情况下,当你不停的在对应距离来回拉扯会不停的触发上下加载函数,具体的过程如下:

为了处理这个问题,需要设置一个节流阀来进行限制,如下:

在调用接口的函数中,进行数据加载前以及加载后页面的设置 :

// 获取商品信息数据getShopList(){  // 表明我们要请求数据了,将isloading修改为true  this.setData({    isloading:true  })  // 展示loading效果  wx.showLoading({    title: '数据加载中......',  })  wx.request({    url: `https://www.escook.cn/categories/${this.data.query.id}/shops`,    method:'GET',    data:{//指定要发送给服务器的参数      _page:this.data.page,      _limit:this.data.pageSize    },    success:(res)=>{      this.setData({        shopList:[...this.data.shopList,...res.data], // 新旧数据的拼接        total: res.header['X-Total-Count']-0      })    },    // 事件完成之后调用    complete:()=>{      // 取消loading效果      wx.hideLoading()      this.setData({        isloading:false      })    }  })},

在上拉加载函数的地方在进行一次判断,如果isloading为true,证明当前正在请求数据,直接return出去就可以了,此时的页码值不会加1,也不会请求数据,当当前的数据请求完成以后,才可以让页码值进行加1,再请求下一页数据。

实现数据是否加载完毕的判断

我们在之前调用的接口中,里面的内容总共只有80条数据,每页有十条数据也就是说总共只有8页,但是当我们频繁的去下拉加载时,页数依然会增加,内容还是属于80条数据里面,这就产生了一个效率问题,如下:所有我们需要对数据是否加载完毕进行一个判断

判断的公式,如果下面公式成立 ,则证明没有下一页数据了:

页码值 * 每页显示多少条数据 >= 总数据条数

page * pageSize >= total

这里需要借用微信官方文档提供的API,如下:

最后的结果如下:

实现下拉刷新功能

实现下拉刷新功能之前,需要在shoplist.json文件中进行相关配置,如下:

结果如下:

接下来需要在下拉刷新函数中进行配置,将data中的数据初始化最初状态,并重新发起接口请求:

onPullDownRefresh() {  // 需要重置关键的数据  this.setData({    page:1,    shopList:[],    total:0  })  // 重新发起数据请求,并传入一个参数函数,在接口请求数据结束,调用该函数阻止下拉刷新  this.getShopList(()=>{    wx.stopPullDownRefresh()  })},    

获取商品数据的函数传递一个形参用来接收函数

在接口请求完成之后通过短路运算调用这个函数,如下:这样即使有别的函数调用获取商品列表的接口函数,没有传递参数的话也是不会调用这个函数的。

可以点击预览在自己的手机上查看相关功能点配置如何:

实现wxs处理手机号

我们可以通过配置一个wxs脚本来对手机号进行设置,如下:

设置脚本文件,如下:

function splitPhone(str){  if(str!==null){    if(str.length !== 11) return str  }else{    return '未知'  }  var arr = str.split('')  arr.splice(3,0,'-')  arr.splice(8,0,'-')  return arr.join('')}module.exports = {  splitPhone:splitPhone} 

最终结果如下:

最终的实现效果

根据上文对项目功能的不断增加,最终这个案例demo所呈现的效果如下:

来源地址:https://blog.csdn.net/qq_53123067/article/details/128891638

--结束END--

本文标题: 微信小程序--》从零实现小程序项目案例

本文链接: https://www.lsjlt.com/news/429943.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 微信小程序--》从零实现小程序项目案例
    🏍️作者简介:大家好,我是亦世凡华、渴望知识储备自己的一名在校大学生 🛵个人主页:亦世凡华、 🛺系列专栏:微信小程序 🚲座右铭:人生亦可燃烧,亦可腐败,我愿燃烧,耗尽...
    99+
    2023-10-12
    微信小程序 前端 小程序 javascript 项目
  • 微信小程序项目实例——今日美食
    微信小程序项目实例——今日美食 文章目录 微信小程序项目实例——今日美食一、项目展示二、首页三、收藏 项目代码见文字底部,点赞关注有惊喜 {swiper.indicatorDots}}"...
    99+
    2023-10-27
    微信小程序 美食 小程序 安卓 移动开发
  • 微信小程序项目中如何实现记账小程序功能
    这篇文章主要介绍微信小程序项目中如何实现记账小程序功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、小程序部分这是理财系统的前端,江苏海洋大学微信小程序比赛,最后获得了一等奖Gi...
    99+
    2024-04-02
  • 微信小程序实现计算器案例
    本文实例为大家分享了微信小程序实现计算器的具体代码,供大家参考,具体内容如下 项目展示 页面设计 分为上面输入的显示部分和下面按键部分 <!--pages/index/i...
    99+
    2024-04-02
  • JavaScript实现微信小程序打卡时钟项目实例
    目录一、项目展示二、首页三、设置文末:项目代码一、项目展示 这是一款简单实用的小时钟工具 分为工作和休息两种状态 用户可以设置相应的时间 所有的时钟记录都会被保存下来 二、首页 首...
    99+
    2024-04-02
  • 微信小程序项目实例——双人五子棋
    微信小程序项目实例——双人五子棋 文章目录 微信小程序项目实例——双人五子棋一、项目展示二、项目核心代码三、效果展示文末 项目代码见文字底部,点赞关注有惊喜 ...
    99+
    2023-09-13
    微信小程序 小程序 android ios 前端
  • 微信小程序如何运维小项目
    这篇文章给大家分享的是有关微信小程序如何运维小项目的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。我们先看下完成后的效果:实现分析基本功能就是做一个IP查询的页面,输入ip,能够查...
    99+
    2024-04-02
  • 【案例】用Jmeter做微信小程序项目接口测试
    公司新项目组开发一款微信小程序电商平台,为了更好保证产品质量,因此提出了需要进行接口测试。从接口本身来讲,对其测试与其他项目应该是一样的。所以不难理解,我们要对小程序的接口测试需要准备的材料有:完备的接口文档(什么是完备的接口文档,之前文章...
    99+
    2023-06-04
  • 【微信小程序】实现微信小程序登录(附源码)
    实现微信小程序登录 文章目录 实现微信小程序登录登录功能简介界面展示代码展示 登录功能简介 通过点击登录按钮,调用微信接口wx.getUserProfile拿到微信的个人信息,先检查是...
    99+
    2023-09-07
    微信小程序 小程序 微信 前端
  • 微信小程序怎么实现小说阅读小程序
    这篇文章主要介绍了微信小程序怎么实现小说阅读小程序,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、先来上图:二、然后下面是详细的说明首先先...
    99+
    2024-04-02
  • 微信小程序商城项目的示例分析
    这篇文章主要为大家展示了“微信小程序商城项目的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“微信小程序商城项目的示例分析”这篇文章吧。页面分析:使用fo...
    99+
    2024-04-02
  • 小程序通过小程序云实现微信支付功能实例
    目录一、开通微信支付 1.1 关联商户号1.2 添加商户号1.3 管理员授权二、云函数开发2.1 新建云函数2.2 云函数代码2.3 云函数上传并部署三、小程序调用3.1 ...
    99+
    2024-04-02
  • 微信小程序实现选项卡的简单实例
    本文实例为大家分享了微信小程序实现选项卡的具体代码,供大家参考,具体内容如下 效果图 实现的功能:点击上面选项卡,下面商品内容实现切换,滑动下面的商品页面,上面的选项也随页面进行切...
    99+
    2024-04-02
  • 微信小程序 | 小程序开发
    🖥️ 微信小程序专栏:小程序开发 初级知识 🧑‍💼 个人简介:一个不甘平庸的平凡人🍬 ✨ 个人主页:CoderHing的个人主页 🍀 格言: ☀️ 路漫...
    99+
    2023-09-08
    微信小程序 小程序
  • 微信小程序--小程序框架
    目录 前言:  一.框架基本介绍 1.整体结构: 2.页面结构: 3.生命周期: 4.事件系统: 5.数据绑定: 6.组件系统: 7.API: 8.路由: 9.模块化: 10.全局配置: 二.视图层详解 1.WXML(WeiXin Mar...
    99+
    2023-10-20
    小程序 微信小程序
  • 微信小程序如何实现选项卡
    这篇文章主要介绍了微信小程序如何实现选项卡,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 微信小程序之选项卡的实现方法前言:从事前...
    99+
    2024-04-02
  • 微信小程序实现下拉选项框
    本文实例为大家分享了微信小程序实现下拉选项框的具体代码,供大家参考,具体内容如下 效果图 test.js   data: {     shows: false, //控制下拉列表...
    99+
    2024-04-02
  • 基于微信小程序云开发实现考研题库小程序项目(完整版)
    今天手把手的带大家实现一款答题类的题库小程序,如果着急的话,可以直接去看文末源码.下载与项目部署。 考研题库小程序云开发实战,完整版提供给大家学习。题库小程序,基于云开发的微信答题小程序,软件架构是微信原生小程序+云开发。 一、项目预览...
    99+
    2023-09-01
    企业培训 线上考试 题库小程序 答题小程序 云开发 Powered by 金山文档
  • 从微信小程序到抖音小程序:转换指南
    抖音小程序是一种新兴的小程序平台,与微信小程序类似,都是基于小程序框架的开发,不过两者的开发环境和API有所不同。如果你已经开发了一款微信小程序,想要将其转换为抖音小程序,可以按照以下步骤进行: 1.注册抖音小程序账号 首先需要注册...
    99+
    2023-10-02
    微信小程序 小程序 Powered by 金山文档
  • 微信小程序项目实例——我有一支画笔(画画)
    微信小程序项目实例——我有一支画笔(画画) 文章目录 微信小程序项目实例——我有一支画笔(画画)一、项目展示二、首页三、自由绘图四、照片绘图文末 项目代码见文字底部,点赞关注有惊喜 ...
    99+
    2023-08-30
    微信小程序 小程序 android ios 前端
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作