




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第八章
主講人:XX我的頁(yè)面功能本章目標(biāo)完成“我的”頁(yè)面功能掌握iconfont字體圖標(biāo)的使用完成文章閱讀歷史頁(yè)面功能完成設(shè)置頁(yè)面功能掌握設(shè)備相關(guān)API的使用任務(wù)一:完成“我的”頁(yè)面功能我的頁(yè)面最終實(shí)現(xiàn)效果任務(wù)描述:本任務(wù)主要完成“我的”頁(yè)面實(shí)現(xiàn),除了使用原有的實(shí)戰(zhàn)技巧的同時(shí),還需要掌握技能包含:iconfont字體圖標(biāo)的使用基于base64圖片背景設(shè)置技巧步驟1:完成“我的”頁(yè)面基本的骨架與樣式。完成“我的”頁(yè)面功能步驟-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">
<!--閱讀歷史頁(yè)面-->
<view
class="nav-item">
<navigator
class="content"
hover-class="none"
url="/pages/profile/pro-history/pro-history">
<text
class="text">閱讀歷史</text>
</navigator>
</view>
<!--設(shè)置頁(yè)面-->
<view
class="nav-item">
<navigator
class="content"
hover-class="none"
url="/pages/setting/setting">
<text
class="text">設(shè)置</text>
</navigator>
</view></view>設(shè)置頁(yè)面骨架代碼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;}/*
導(dǎo)航
*/.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;}設(shè)置頁(yè)面樣式代碼完成“我的”頁(yè)面功能步驟-2步驟2:添加base64圖片的背景在微信小程序開(kāi)發(fā)中,頁(yè)面樣式設(shè)置背景圖片不能設(shè)置一個(gè)在線的圖片,因此我們需要通過(guò)base64的方式圖片進(jìn)行設(shè)置,可以通過(guò)線上base64的圖片轉(zhuǎn)換工具進(jìn)行轉(zhuǎn)換,其操作方式與下圖方式差不多.profile-header
{
background-image:
url(base64編譯后字符串)}完成“我的”頁(yè)面功能步驟-2步驟3:使用iconfont字體圖標(biāo)設(shè)置導(dǎo)圖圖標(biāo)使用阿里巴巴為我們提供在線iconfont字體圖標(biāo)庫(kù),通過(guò)查找項(xiàng)目對(duì)應(yīng)的圖標(biāo)字體,集中添加項(xiàng)目中進(jìn)入對(duì)應(yīng)“微信小程序項(xiàng)目”,選擇【Fontclass】方式,然后把css代碼復(fù)制出來(lái)完成“我的”頁(yè)面功能步驟-3步驟3:使用iconfont字體圖標(biāo)設(shè)置導(dǎo)圖圖標(biāo)本地項(xiàng)目中創(chuàng)建一個(gè)全局樣式文件iconfont.wxss文件,把復(fù)制的內(nèi)容粘貼到此文件在項(xiàng)目全局樣式app.wxss文件中導(dǎo)入iconfont的樣式即可,示例代碼如下:@import
"iconfont.wxss";完成了iconfont樣式導(dǎo)入后,接下來(lái)我們直接profile.wxss文件中引用,示例代碼如下:
<i
class="iconfont
icon-lishi"></i>任務(wù)二:完成“閱讀歷史”功能任務(wù)描述:本任務(wù)主要完成“閱讀歷史”,其功能包含:進(jìn)入文章詳情頁(yè)面,記錄閱讀歷史。在“我的”頁(yè)面中對(duì)閱讀歷史記錄進(jìn)行查看。完成“閱讀歷史”功能步驟-1步驟1:完成進(jìn)入文章詳情頁(yè)面,保存閱讀歷史記錄為了區(qū)分不同用戶的歷史記錄,我們可以使用登錄后的用戶名作為本次緩存的key,因此我們需要在g全局變量中定義一個(gè)全局變量g_username,示例:globalData:{g_username:},修改welcome.js中用戶登錄授權(quán)相關(guān)邏輯,使得完成授權(quán)后設(shè)置全局用戶變量,并初始化閱讀歷史記錄,示例:
//
設(shè)置全局用戶變量
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;//判斷當(dāng)前閱讀文章是否在歷史中存在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:完成閱讀歷史記錄列表展示創(chuàng)建閱讀歷史頁(yè)面<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>構(gòu)建頁(yè)面骨架完成“閱讀歷史”功能步驟-2步驟2:完成閱讀歷史記錄列表展示/***生命周期函數(shù)--監(jiān)聽(tīng)頁(yè)面加載*/onLoad(options){constusername=app.globalData.g_username;constreadHistory=wx.getStorageSync(username)console.log('readHistory',readHistory)this.setData({postList:readHistory})},
//跳轉(zhuǎn)到詳情頁(yè)面gotoDetail(event){constpostId=event.currentTarget.idwx.navigateTo({url:'/pages/post-detail/post-detail?postId='+postId,})}})處理顯示閱讀歷史記錄的邏輯完成“閱讀歷史”功能步驟-2步驟2:完成閱讀歷史記錄列表展示/***生命周期函數(shù)--監(jiān)聽(tīng)頁(yè)面加載*/onLoad(options){constusername=app.globalData.g_username;constreadHistory=wx.getStorageSync(username)console.log('readHistory',readHistory)this.setData({postList:readHistory})},
//跳轉(zhuǎn)到詳情頁(yè)面gotoDetail(event){constpostId=event.currentTarget.idwx.navigateTo({url:'/pages/post-detail/post-detail?postId='+postId,})}})處理顯示閱讀歷史記錄的邏輯任務(wù)三:完成用戶設(shè)置功能進(jìn)入用設(shè)置頁(yè)面用戶設(shè)置昵稱信息任務(wù)描述:本任務(wù)主要完成用戶設(shè)置功能,請(qǐng)功能包含:完成“設(shè)置”頁(yè)面的骨架與頁(yè)面樣式。顯示當(dāng)前用戶信息完成用戶信息設(shè)置功能完成用戶設(shè)置功能步驟-1步驟1:完成設(shè)置頁(yè)面骨架與樣式<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、系統(tǒng)消息、網(wǎng)絡(luò)狀態(tài)、當(dāng)前位置與速度、二維碼)--><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>設(shè)置頁(yè)面setting.wxml代碼Page({/***頁(yè)面的初始數(shù)據(jù)*/data:{device:[{iconurl:'/images/icon/wx_app_clear.png',title:'緩存清理',tap:'clearCache'},{iconurl:'/images/icon/wx_app_cellphone.png',title:'系統(tǒng)信息',tap:'showSystemInfo'},{iconurl:'/images/icon/wx_app_network.png',title:'網(wǎng)絡(luò)狀態(tài)',tap:'showNetWork'},{iconurl:'/images/icon/wx_app_lonlat.png',title:'當(dāng)前位置、速度',tap:'showLonLat'},{iconurl:'/images/icon/wx_app_scan_code.png',title:'二維碼',tap:'scanQRCode'}],},})設(shè)置頁(yè)面數(shù)據(jù)初始化獲取用戶信息-getUserInfo()2021年4月15日,微信官方對(duì)于小程序用戶信息相關(guān)接口調(diào)整說(shuō)明中新增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函數(shù)中獲得用戶信息獲得用戶信息,用戶名為”微信用戶“,頭像為灰色圖像獲取用戶信息-getUserInfo()2021年4月15日,微信官方對(duì)于小程序用戶信息相關(guān)接口調(diào)整說(shuō)明中新增getUserProfile代替getUserInfo()方法可以獲取用戶頭像、昵稱、性別等基本信息。獲取用戶信息-wx.getUserProfile()自2022年10月25日,微信官方對(duì)于wx.getUserProfile進(jìn)行調(diào)整獲取用戶信息-最佳實(shí)踐微信小程序官方在最佳實(shí)踐中提出希望用戶自行在小程序中完善自己的用戶信息。<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="請(qǐng)輸入昵稱"bindconfirm="showNickName"value="{{inputNickName}}"/></view>緩存管理-清除緩存通過(guò)wx.clearStorage實(shí)現(xiàn)異步清除緩存操作
//顯示模態(tài)窗口
showModal(title,
content,
callback)
{
wx.showModal({title:
title,content:
content,confirmColor:
'#1F4BA5',cancelColor:
'#7F8389',
success:
(res)
=>
{
if(res.confirm){
callback
&&
callback();
}
}
})
},彈出一個(gè)modal模態(tài)對(duì)話框,提醒用戶是否清除緩存
//清理緩存
clearCache()
{
this.showModal('緩存清理',
'親,您確定要清除本地緩存嗎?',
function
()
{
wx.clearStorage({
success:
(res)
=>
{
wx.showToast({title:
'緩存清理成功',duration:
1000,mask:
true,icon:
"success"
})
},
fail:
(e)
=>
{
console.log(e);
}
})
});
},調(diào)用wx.clearStorage()方法實(shí)現(xiàn)清除緩存獲取系統(tǒng)信息-wx.getSystemInfoAsync通過(guò)使用getSystemInfoAsync()方法獲取系統(tǒng)信息,其中包括:手機(jī)型號(hào)、手機(jī)型號(hào)、手機(jī)語(yǔ)言、微信版本、操作系統(tǒng)、屏幕像素比和屏幕尺寸信息。onLoad:
function
(options)
{
wx.getSystemInfoAsync({
success:
(result)
=>
{
this.setData({phoneInfo:[
{key:'手機(jī)型號(hào)',val:result.model},
{key:'手機(jī)語(yǔ)言',val:result.language}],softInfo:[
{key:'微信版本',val:result.version},
{key:'操作系統(tǒng)版本',val:result.system}],screenInfo:[
{key:'屏幕像素比',val:result.pixelRatio},
{key:'屏幕尺寸',val:result.windowWidth
+
'×'
+
result.windowHeight}]
});
},
})
},獲取網(wǎng)絡(luò)狀態(tài)-wx.getNetworkType通過(guò)使用wx.getNetworkType()方法獲取當(dāng)前手機(jī)網(wǎng)絡(luò)狀態(tài)//獲取網(wǎng)絡(luò)狀態(tài)
showNetWork()
{
wx.getNetworkType({
success:
(result)
=>
{
let
netWorkType
=
result.networkType;
this.showModal('網(wǎng)絡(luò)狀態(tài)',
'您當(dāng)前的網(wǎng)絡(luò):'
+
netWorkType);
},
})
}獲取當(dāng)前位置與當(dāng)前速度信息-wx.getLocation()通過(guò)使用wx.getLocation()獲取當(dāng)前位置與當(dāng)前速度信息
//獲取當(dāng)前為止經(jīng)緯度與當(dāng)前速度
getLonLat(callback)
{
wx.getLocation({altitude:
'false',type:
'gcj02',
success:
(res)
=>
{
callback(res.longitude,
res.latitude,
res.speed);
}
})
},//顯示當(dāng)前為位置坐標(biāo)與當(dāng)前速度
showLonLat()
{
this.getLonLat((lon,
lat,
speed)
=>
{
let
lonStr
=
lon
>=
0
?
'東經(jīng)'
:
'西經(jīng)',
latStr
=
lat
>=
0
?
'北緯'
:
'南緯';
lon
=
lon.toFixed(2);
lat
=
lat.toFixed(2);
lonStr
+=
lon;
latStr
+=
lat;
speed
=(speed
||
0).toFixed(2);
this.showModal('當(dāng)前位置和速度',
'當(dāng)前位置:'
+
lonStr
+
','
+
latStr
+
'。速度:'
+
speed
+
'm/s');
})
},獲取當(dāng)前為止經(jīng)緯度與當(dāng)前速度顯示當(dāng)前為位置坐標(biāo)與當(dāng)前速度使用微信內(nèi)置地圖查看位置信息通過(guò)使用wx.openLocation(Object)方法查看地圖信息
//在地圖上顯示當(dāng)前位置
showMap()
{
this.getLonLat((lon,
lat)
=>
{
wx.openLocation({latitude:
lat,longitude:
lon,scale:
15,name:
"武漢大學(xué)",address:
"xx街xx號(hào)",
fail:
()
=>
{
wx.showToast({title:
"地圖打開(kāi)失敗",duration:
1000,icon:
"cancel"
});
}
});
})
}掃描二維碼通過(guò)使用wx.scanCode(Object)方法,實(shí)現(xiàn)掃描二維碼獲取信息/掃描二維碼
scanQRCode()
{
wx.scanCode({onlyFromCamera:
false,
success:
(res)
=>
{
console.log(res);
this.showModal('掃描二維碼/條形碼',
res.result,
false);
},
fail:
(res)
=>
{
this.showModal('掃描二維碼/條形碼',
'掃碼失敗,請(qǐng)重試',
false);
}
})
}實(shí)現(xiàn)關(guān)鍵代碼示例二維碼二維碼掃描效果文件下載與預(yù)覽實(shí)現(xiàn)文件下載與預(yù)覽的步驟:1.新建下載頁(yè)面,編寫頁(yè)面骨架和樣式。2.準(zhǔn)備對(duì)應(yīng)下載文件上傳到云存儲(chǔ)空間。3.編寫文件下載業(yè)務(wù)邏輯,實(shí)現(xiàn)多種類型文件下載。文件下載與預(yù)覽步驟1:構(gòu)建下載頁(yè)面元素與初始化數(shù)據(jù)<!--文件下載頁(yè)面元素--><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>/***頁(yè)面的初始數(shù)據(jù)*/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類型'
}],
},文件下載與預(yù)覽步驟2:準(zhǔn)備下載文件,上傳到云存儲(chǔ)空間文件下載與預(yù)覽步驟3:編寫文件下載業(yè)務(wù)邏輯,實(shí)現(xiàn)多種類型文件下載//下載文件
downloadFile(event)
{
let
wordType
=
event.currentTarget.dataset.type;
let
url
=
"https
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 會(huì)議室租賃協(xié)議標(biāo)準(zhǔn)
- 合同續(xù)簽本人意向書
- 總經(jīng)理聘用合同例文
- 公司銷售合同
- 科技成果評(píng)估委托協(xié)議
- 水資源管理系統(tǒng)建設(shè)項(xiàng)目合同
- 全球工程承攬及設(shè)備安裝合同
- 勞動(dòng)合同不定期合同
- 股份期權(quán)協(xié)議書
- 項(xiàng)目推廣活動(dòng)策劃方案
- 八年級(jí)上冊(cè)英語(yǔ)閱讀還原50題-含答案
- 中國(guó)鋁業(yè)股份有限公司鞏義市齊興鋁土礦礦產(chǎn)資源開(kāi)采與生態(tài)修復(fù)方案
- 腹膜透析相關(guān)性腹膜炎的護(hù)理查房
- 網(wǎng)優(yōu)案例匯總
- 病毒性心肌炎病歷模板
- 倉(cāng)庫(kù)每日檢查記錄表倉(cāng)庫(kù)每日檢查內(nèi)容及每日巡查事項(xiàng)
- 《物品收納方法多》小學(xué)勞動(dòng)課
- 唐詩(shī)長(zhǎng)恨歌白居易注音版
- (8.2)-7.2舞臺(tái)服裝設(shè)計(jì)-舞臺(tái)服裝色彩
- 早產(chǎn)兒視網(wǎng)膜病變
- 矮小癥診治指南
評(píng)論
0/150
提交評(píng)論