02. swiperimagerequest
Posted Composition55555
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了02. swiperimagerequest相关的知识,希望对你有一定的参考价值。
文章目录
写在前面
- 本文写了很多官网的API的相关知识点,可略过直接到官网查看
记第一个小程序DEMO
- 名称:仿网易云音乐小程序
- 接口:网易云音乐NodeJS版 API
- 内容:主要实现轮播图、歌单推荐、排行榜、歌单显示、歌曲播放、歌词显示这几部分功能,其它暂未作考虑
- 本文主要内容:实现首页轮播图
因为涉及到轮播图的实现,所以我们先来看看swiper标签
01. Swiper轮播图标签
详见swiper
(1)关于指示点
-
indicator-dots
:是否显示面板指示点 -
indicator-color
:指示点颜色 -
indicator-active-color
:当前选中的指示点颜色
(2)关于切换
-
current
:当前所在滑块的 index -
autoplay
:是否自动切换注意,如果要设置
true
或者false
请务必将其放在插值表达式中
<swiper autoplay="false"></swiper>
否则,你设置的只是一段字符串,它将永远是
true
,始终会开启自动滚动 -
interval
:自动切换时间间隔 -
duration
:滑动动画过渡时长 -
circular
:是否采用衔接滑动,即循环轮播 -
vertical
:滑动方向是否为纵向设置
true | false
请使用插值表达式 -
easing-function
:指定 swiper 切换缓动动画类型可选值:
default
:默认缓动动画linear
:线性动画easeInCubic
:缓入动画easeOutCubic
:缓出动画easeInOUtCubic
:缓入缓出动画
(3)关于滑块
-
previous-margin
:滑块的前边距,可用于露出前一项的一小部分,接受 px 和 rpx 值 -
next-margin
:滑块的后边距,可用于露出后一项的一小部分,接受 px 和 rpx 值 -
snap-to-edge
:当滑块的个数大于等于 2,关闭 circular 并且开启 previous-margin 或 next-margin 的时候,可以指定这个边距是否应用到第一个、最后一个元素 -
display-multiple-items
:同时显示的滑块数量
(4)关于事件
-
bindchange
:current 改变时会触发 change 事件,event.detail = current, source
-
bindtransition
:swiper-item 的位置发生改变时会触发 transition 事件,event.detail = dx: dx, dy: dy
-
bindanimationfinish
:动画结束时会触发 animationfinish 事件,event.detail 同上
轮播容器有了,需要以图片形式展示,因此我们再来看看image图片标签
02. image图片标签
详见image
(1)基本属性
src
:图片地址lazy-load
:图片懒加载webp
:是否可解析webP格式show-menu-by-longpressv
:是否开启长按识别小程序码菜单
(2)关于样式
-
class
:图片样式类,只能通过类来设置样式.img width: 100rpx; height: 100prx;
(3)关于模式
mode
:裁剪模式、缩放模式- 缩放模式
scaleToFill
: 使图片宽高撑满image元素的宽高,(注意:image组件默认宽高为 320 X 240 px)aspectFit
:使较长边能显示出来,会缩放较短边,可以完整显示图片aspectFill
:使较短边显示出来,较长边会被截取widthFix
:宽度固定,高度自适应,宽高比不变heightFix
:高度固定,宽度自适应,宽高比不变
- 裁剪模式
top
:只显示顶部区域bottom
:只显示底部区域center
:只显示中间区域left
:只显示左边区域right
:只显示右边区域top left
:只显示左上边区域top right
:只显示右上边区域bottom left
:只显示左下边区域bottom right
:只显示右下边区域
- 缩放模式
(4)关于事件
binderror
:错误发生时触发事件bindload
:载入完毕时触发事件
现在我们开始尝试布局
04. 轮播图区域实现
<!-- 轮播图区域 -->
<view class="bannerContainer">
<swiper
class="banner"
indicator-dots=" true "
indicator-color="rgba(255,255,255,.8)"
indicator-active-color="rgba(222,0,0,.8)"
autoplay=" true "
current="0"
interval="2000"
duration="500"
circular="true"
vertical=" false "
>
<swiper-item>
<image src="static/image/001.png" mode="scaleToFill" lazy-load="false"></image>
</swiper-item>
<swiper-item>
<image src="static/image/002.png" mode="scaleToFill" lazy-load="false"></image>
</swiper-item>
<swiper-item>
<image src="static/image/003.png" mode="scaleToFill" lazy-load="false"></image>
</swiper-item>
</swiper>
</view>
- 实现效果如下
那么,接下来就要开始请求数据,所以我们来看看小程序的请求API——
wx.request()
05. request网络请求
详见request
(1)基本属性
-
url
:请求地址 -
data
:请求参数 -
header
:请求头 -
method
:请求方法,包括GET | POST | PUT | DELETE
、OPTIONS | HEAD | TRACE | CONNECT
-
dataType
:返回的数据格式,设置为JSON,会进行JSON.parse
,设置为其它则不会 -
responseType
:响应的数据类型,包括text | arraybuffer
-
timeout
:超时时间 -
success
:接口调用成功的回调函数 -
fail
:接口调用失败的回调函数 -
complete
:接口调用结束的回调函数(调用成功、失败都会执行)
(2)其它注意
- 小程序域名只支持
https
- 开发过程中,可以临时设置不校验合法域名
- 每个接口最多配置20个域名
- 并发限制上限10个
现在我们尝试封装request函数,简化请求流程
06. 封装request
// 可以在这里定义host,也可以在外部定义,然后从外部引入
const host = 'http://localhost:3000'
export default (url, data = , method = 'GET') =>
return new Promise((resolve, reject) =>
wx.request(
url: host + url,
data,
method,
// 在发送请求时,在请求头携带 cookie
// 先判断是否有cookie
header: ,
success: res =>
console.log('请求成功:', res)
resolve(res.data) // resolve修改 promise的状态为成功状态 resolved
,
fail: err =>
console.log('请求失败:', err)
reject(err) // reject修改 promise的状态为失败状态 rejected
,
)
)
接下来尝试从服务器请求数据并显示在页面
07. 请求数据
-
在
index.js
中定义一个方法,并在页面加载时调用这个方法,基本步骤同Vue类似注意,与Vue不同的是,小程序中的data的数据改变需要使用
this.setData(...)
其调用
data
中的数据时,需要使用this.data.属性
import request from '../../utils/request'
Page(
data:
bannerData: [], // 轮播图数据
,
onLoad()
this.getBanners()
,
getBanners()
request('/banner', type: 2 ).then(res =>
if (res.code === 200)
this.setData(
bannerData: res.banners,
)
)
,
)
然后我们
wx
指令,将获取的数据循环渲染到页面
08. 渲染数据
请根据实际返回数据进行渲染
-
回顾一下
wx:for
指令详见列表渲染
- 使用
wx:for
来进行循环,可以作用于数组、对象-
使用
wx:for-index
来指定索引下标的变量名,如没有指定,则默认index
为索引项 -
使用
wx:for-item
来指定元素项的变量名,如没有指定,则默认item
为元素项 -
使用
ws:key
来标识唯一,用以提高渲染性能,同Vue中的key
-
- 使用
<!-- 轮播图区域 -->
<view class="bannerContainer">
<swiper
class="banner"
indicator-dots=" true "
indicator-color="rgba(255,255,255,.8)"
indicator-active-color="rgba(222,0,0,.8)"
autoplay=" true "
current="0"
interval="2000"
duration="500"
circular="true"
vertical=" false "
>
<swiper-item wx:for=" bannerData " wx:key="bannerId">
<image src=" item.pic " mode="scaleToFill" lazy-load="false"></image>
</swiper-item>
</swiper>
</view>
以上是关于02. swiperimagerequest的主要内容,如果未能解决你的问题,请参考以下文章
SFSafariViewController 在推入 UINavigationController 时隐藏网络活动指示器