《微信小程序程序设计与开发》课件 第八章 我的功能_第1页
《微信小程序程序设计与开发》课件 第八章 我的功能_第2页
《微信小程序程序设计与开发》课件 第八章 我的功能_第3页
《微信小程序程序设计与开发》课件 第八章 我的功能_第4页
《微信小程序程序设计与开发》课件 第八章 我的功能_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第八章

主讲人:XX我的页面功能本章目标完成“我的”页面功能掌握iconfont字体图标的使用完成文章阅读历史页面功能完成设置页面功能掌握设备相关API的使用任务一:完成“我的”页面功能我的页面最终实现效果任务描述:本任务主要完成“我的”页面实现,除了使用原有的实战技巧的同时,还需要掌握技能包含:iconfont字体图标的使用基于base64图片背景设置技巧步骤1:完成“我的”页面基本的骨架与样式。完成“我的”页面功能步骤-1<view

class="profile-header">

<view

class="avatar-url">

<open-data

type="userAvatarUrl"></open-data>

</view>

<open-data

type="userNickName"

class="nickname"></open-data></view><view

class="nav">

<!--阅读历史页面-->

<view

class="nav-item">

<navigator

class="content"

hover-class="none"

url="/pages/profile/pro-history/pro-history">

<text

class="text">阅读历史</text>

</navigator>

</view>

<!--设置页面-->

<view

class="nav-item">

<navigator

class="content"

hover-class="none"

url="/pages/setting/setting">

<text

class="text">设置</text>

</navigator>

</view></view>设置页面骨架代码page

{

background-color:

#f1f1f1;}.profile-header

{

background-size:

cover;

height:

480rpx;

display:

flex;

justify-content:

center;

flex-direction:

column;

align-items:

center;

color:

#fff;

font-weight:

300;

text-shadow:

0

0

3px

rgba(0,

0,

0,

0.3);}.avatar-url

{

width:

200rpx;

height:

200rpx;

display:

block;

overflow:

hidden;

border:

6rpx

solid

#fff;

border-radius:

50%;}.nickname

{

font-size:

36rpx;

margin-top:

20rpx;

font-weight:

400;}/*

导航

*/.nav

{

overflow:

hidden;

margin-right:

30rpx;

margin-left:

30rpx;

border-radius:

20rpx;

margin-bottom:

50rpx;

margin-top:

50rpx;

box-sizing:

border-box;

display:

block;}.nav-item

{

padding-right:

90rpx;

position:

relative;

display:

flex;

padding:

0

30rpx;

min-height:

100rpx;

background-color:

#fff;

justify-content:

space-between;

align-items:

center;

box-sizing:

border-box;

border-bottom:

1rpx

solid

rgba(0,

0,

0,

0.1);}.content

{

font-size:

30rpx;

line-height:

1.6em;

flex:

1;}.img

{

display:

inline-block;

margin-right:

10rpx;

width:

1.6em;

height:

1.6em;

vertical-align:

middle;

max-width:

100%;}.text

{

color:

#808080;}.content

.iconfont

{

color:

#d43c33;

font-weight:

600;

margin-right:

30rpx;}.content

.icon-gengduo

{

position:

absolute;

top:

50%;

transform:

translateY(-50%);

right:

30rpx;

bottom:

0;

color:

#808080;

font-size:

28rpx;}设置页面样式代码完成“我的”页面功能步骤-2步骤2:添加base64图片的背景在微信小程序开发中,页面样式设置背景图片不能设置一个在线的图片,因此我们需要通过base64的方式图片进行设置,可以通过线上base64的图片转换工具进行转换,其操作方式与下图方式差不多.profile-header

{

background-image:

url(base64编译后字符串)}完成“我的”页面功能步骤-2步骤3:使用iconfont字体图标设置导图图标使用阿里巴巴为我们提供在线iconfont字体图标库,通过查找项目对应的图标字体,集中添加项目中进入对应“微信小程序项目”,选择【Fontclass】方式,然后把css代码复制出来完成“我的”页面功能步骤-3步骤3:使用iconfont字体图标设置导图图标本地项目中创建一个全局样式文件iconfont.wxss文件,把复制的内容粘贴到此文件在项目全局样式app.wxss文件中导入iconfont的样式即可,示例代码如下:@import

"iconfont.wxss";完成了iconfont样式导入后,接下来我们直接profile.wxss文件中引用,示例代码如下:

<i

class="iconfont

icon-lishi"></i>任务二:完成“阅读历史”功能任务描述:本任务主要完成“阅读历史”,其功能包含:进入文章详情页面,记录阅读历史。在“我的”页面中对阅读历史记录进行查看。完成“阅读历史”功能步骤-1步骤1:完成进入文章详情页面,保存阅读历史记录为了区分不同用户的历史记录,我们可以使用登录后的用户名作为本次缓存的key,因此我们需要在g全局变量中定义一个全局变量g_username,示例:globalData:{g_username:},修改welcome.js中用户登录授权相关逻辑,使得完成授权后设置全局用户变量,并初始化阅读历史记录,示例:

//

设置全局用户变量

app.globalData.g_username

=

userInfo.nickName

console.log('username',app.globalData.g_username)

//

用于保存最近的阅读记录

wx.setStorageSync(app.globalData.g_username

,

[])//保存用户阅读文章历史记录_savePostHistory(){constnowReadPost=this.data.postconstusername=app.globalData.g_username;console.log('username',username)constreadHistory=wx.getStorageSync(username);console.log('readHistory',readHistory)letisContains=false;//判断当前阅读文章是否在历史中存在for(leti=0,len=readHistory.length;i<len;i++){if(readHistory[i].postId==nowReadPost.postId){isContains=true;break}}if(!isContains){readHistory.unshift(nowReadPost);wx.setStorageSync(username,readHistory)}console.log('_savePostHistory')},完成“阅读历史”功能步骤-2步骤2:完成阅读历史记录列表展示创建阅读历史页面<viewclass="container"><!--文章列表--><viewclass="empyMesssage"wx:if="{{postList.length<=0}}">文章阅读历史记录为空!</view><blockwx:for="{{postList}}"wx:for-item="post"wx:for-index="idx"wx:key="postId"><viewclass="post-container"bindtap="gotoDetail"id="{{post.postId}}"><viewclass="post-author-date"><imagesrc="{{post.avatar}}"/><text>{{post.date}}</text></view><textclass="post-title">{{post.title}}</text></view></block></view>构建页面骨架完成“阅读历史”功能步骤-2步骤2:完成阅读历史记录列表展示/***生命周期函数--监听页面加载*/onLoad(options){constusername=app.globalData.g_username;constreadHistory=wx.getStorageSync(username)console.log('readHistory',readHistory)this.setData({postList:readHistory})},

//跳转到详情页面gotoDetail(event){constpostId=event.currentTarget.idwx.navigateTo({url:'/pages/post-detail/post-detail?postId='+postId,})}})处理显示阅读历史记录的逻辑完成“阅读历史”功能步骤-2步骤2:完成阅读历史记录列表展示/***生命周期函数--监听页面加载*/onLoad(options){constusername=app.globalData.g_username;constreadHistory=wx.getStorageSync(username)console.log('readHistory',readHistory)this.setData({postList:readHistory})},

//跳转到详情页面gotoDetail(event){constpostId=event.currentTarget.idwx.navigateTo({url:'/pages/post-detail/post-detail?postId='+postId,})}})处理显示阅读历史记录的逻辑任务三:完成用户设置功能进入用设置页面用户设置昵称信息任务描述:本任务主要完成用户设置功能,请功能包含:完成“设置”页面的骨架与页面样式。显示当前用户信息完成用户信息设置功能完成用户设置功能步骤-1步骤1:完成设置页面骨架与样式<viewclass="container"><!--显示用户信息--><viewclass="category-itempersonal-info"><viewclass="user-avatar"bindtap="getUserInfo"><imagesrc="{{userInfo.avatarUrl}}"></image></view><viewclass="user-name"><viewclass="user-nickname"><text>用户名:{{userInfo.nickName}}</text></view></view></view>

<!--常用API的使用(缓存API、系统消息、网络状态、当前位置与速度、二维码)--><viewclass="category-item"><blockwx:for="{{device}}"wx:key="item"><viewclass="detail-item"catchtap="{{item.tap}}"><imagesrc="{{item.iconurl}}"></image><text>{{item.title}}</text><viewclass="detail-item-btn"></view></view></block></view></view>设置页面setting.wxml代码Page({/***页面的初始数据*/data:{device:[{iconurl:'/images/icon/wx_app_clear.png',title:'缓存清理',tap:'clearCache'},{iconurl:'/images/icon/wx_app_cellphone.png',title:'系统信息',tap:'showSystemInfo'},{iconurl:'/images/icon/wx_app_network.png',title:'网络状态',tap:'showNetWork'},{iconurl:'/images/icon/wx_app_lonlat.png',title:'当前位置、速度',tap:'showLonLat'},{iconurl:'/images/icon/wx_app_scan_code.png',title:'二维码',tap:'scanQRCode'}],},})设置页面数据初始化获取用户信息-getUserInfo()2021年4月15日,微信官方对于小程序用户信息相关接口调整说明中新增getUserProfile代替getUserInfo()方法可以获取用户头像、昵称、性别等基本信息。获取用户信息-wx.getUserInfo(Objectobject)

//获取用户信息

wx.getUserInfo({

success:

(res)

=>

{

console.log("res",

res);

console.log(res.userInfo);

this.setData({userInfo:res.userInfo

})

}

})在setting.js的onLoad函数中获得用户信息获得用户信息,用户名为”微信用户“,头像为灰色图像获取用户信息-getUserInfo()2021年4月15日,微信官方对于小程序用户信息相关接口调整说明中新增getUserProfile代替getUserInfo()方法可以获取用户头像、昵称、性别等基本信息。获取用户信息-wx.getUserProfile()自2022年10月25日,微信官方对于wx.getUserProfile进行调整获取用户信息-最佳实践微信小程序官方在最佳实践中提出希望用户自行在小程序中完善自己的用户信息。<view

class="container">

<button

bindtap="getUserInfo">获取用户信息</button>

<text>用户名:{{nickName}}</text>

<button

open-type="chooseAvatar"bind:chooseavatar="onChooseAvatar">

<image

src="{{userinfo.avatarUrl}}"class="userinfo-avatar"></image>

</button>

<input

type="nickname"class="weui-input"placeholder="请输入昵称"bindconfirm="showNickName"value="{{inputNickName}}"/></view>缓存管理-清除缓存通过wx.clearStorage实现异步清除缓存操作

//显示模态窗口

showModal(title,

content,

callback)

{

wx.showModal({title:

title,content:

content,confirmColor:

'#1F4BA5',cancelColor:

'#7F8389',

success:

(res)

=>

{

if(res.confirm){

callback

&&

callback();

}

}

})

},弹出一个modal模态对话框,提醒用户是否清除缓存

//清理缓存

clearCache()

{

this.showModal('缓存清理',

'亲,您确定要清除本地缓存吗?',

function

()

{

wx.clearStorage({

success:

(res)

=>

{

wx.showToast({title:

'缓存清理成功',duration:

1000,mask:

true,icon:

"success"

})

},

fail:

(e)

=>

{

console.log(e);

}

})

});

},调用wx.clearStorage()方法实现清除缓存获取系统信息-wx.getSystemInfoAsync通过使用getSystemInfoAsync()方法获取系统信息,其中包括:手机型号、手机型号、手机语言、微信版本、操作系统、屏幕像素比和屏幕尺寸信息。onLoad:

function

(options)

{

wx.getSystemInfoAsync({

success:

(result)

=>

{

this.setData({phoneInfo:[

{key:'手机型号',val:result.model},

{key:'手机语言',val:result.language}],softInfo:[

{key:'微信版本',val:result.version},

{key:'操作系统版本',val:result.system}],screenInfo:[

{key:'屏幕像素比',val:result.pixelRatio},

{key:'屏幕尺寸',val:result.windowWidth

+

'×'

+

result.windowHeight}]

});

},

})

},获取网络状态-wx.getNetworkType通过使用wx.getNetworkType()方法获取当前手机网络状态//获取网络状态

showNetWork()

{

wx.getNetworkType({

success:

(result)

=>

{

let

netWorkType

=

result.networkType;

this.showModal('网络状态',

'您当前的网络:'

+

netWorkType);

},

})

}获取当前位置与当前速度信息-wx.getLocation()通过使用wx.getLocation()获取当前位置与当前速度信息

//获取当前为止经纬度与当前速度

getLonLat(callback)

{

wx.getLocation({altitude:

'false',type:

'gcj02',

success:

(res)

=>

{

callback(res.longitude,

res.latitude,

res.speed);

}

})

},//显示当前为位置坐标与当前速度

showLonLat()

{

this.getLonLat((lon,

lat,

speed)

=>

{

let

lonStr

=

lon

>=

0

?

'东经'

:

'西经',

latStr

=

lat

>=

0

?

'北纬'

:

'南纬';

lon

=

lon.toFixed(2);

lat

=

lat.toFixed(2);

lonStr

+=

lon;

latStr

+=

lat;

speed

=(speed

||

0).toFixed(2);

this.showModal('当前位置和速度',

'当前位置:'

+

lonStr

+

','

+

latStr

+

'。速度:'

+

speed

+

'm/s');

})

},获取当前为止经纬度与当前速度显示当前为位置坐标与当前速度使用微信内置地图查看位置信息通过使用wx.openLocation(Object)方法查看地图信息

//在地图上显示当前位置

showMap()

{

this.getLonLat((lon,

lat)

=>

{

wx.openLocation({latitude:

lat,longitude:

lon,scale:

15,name:

"武汉大学",address:

"xx街xx号",

fail:

()

=>

{

wx.showToast({title:

"地图打开失败",duration:

1000,icon:

"cancel"

});

}

});

})

}扫描二维码通过使用wx.scanCode(Object)方法,实现扫描二维码获取信息/扫描二维码

scanQRCode()

{

wx.scanCode({onlyFromCamera:

false,

success:

(res)

=>

{

console.log(res);

this.showModal('扫描二维码/条形码',

res.result,

false);

},

fail:

(res)

=>

{

this.showModal('扫描二维码/条形码',

'扫码失败,请重试',

false);

}

})

}实现关键代码示例二维码二维码扫描效果文件下载与预览实现文件下载与预览的步骤:1.新建下载页面,编写页面骨架和样式。2.准备对应下载文件上传到云存储空间。3.编写文件下载业务逻辑,实现多种类型文件下载。文件下载与预览步骤1:构建下载页面元素与初始化数据<!--文件下载页面元素--><view

class="container">

<view

class="file-type-head">

<text>文件类型</text>

</view>

<view

class="category-item">

<block

wx:for="{{fileTypeList}}">

<view

class="detail-item"catchtap="downloadFile"data-type="{{item.type}}">

<image

src="{{item.iconurl}}"></image>

<text>{{item.title}}</text>

<view

class="detail-item-btn"></view>

</view>

</block>

</view></view>/***页面的初始数据*/data:

{fileTypeList:[{type:

'pdf',iconurl:

'/images/icon/wx_app_pdf.png',title:

'pdf类型'

},

{type:

'word',iconurl:

'/images/icon/wx_app_word.png',title:

'word类型'

},

{type:

'excel',iconurl:

'/images/icon/wx_app_exl.png',title:

'excel类型'

},

{type:

'ppt',iconurl:

'/images/icon/wx_app_ppt.png',title:

'ppt类型'

}],

},文件下载与预览步骤2:准备下载文件,上传到云存储空间文件下载与预览步骤3:编写文件下载业务逻辑,实现多种类型文件下载//下载文件

downloadFile(event)

{

let

wordType

=

event.currentTarget.dataset.type;

let

url

=

"https

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论