




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第六章
主講人:XX電影首頁本章目標(biāo)掌握小程序選項(xiàng)卡與使用swithTab的使用掌握自定義組件的使用掌握從服務(wù)器加載數(shù)據(jù)(wx.request發(fā)送http/https請(qǐng)求)完成電影頁面功能完成電影搜索功能任務(wù)一:完成多頁面背景音樂播放功能實(shí)現(xiàn)背景音樂功能文章頁面任務(wù)描述:本小節(jié)的任務(wù)主要任務(wù)使用小程序提供tab選項(xiàng)卡實(shí)現(xiàn)不同模塊之間的切換,即完成貫穿項(xiàng)目中“發(fā)現(xiàn)”模塊、“電影”模塊、“我的”模塊三大模塊的切換完成多個(gè)模塊切換功能-知識(shí)點(diǎn)學(xué)習(xí)在app.json中通過配置tabBar屬性實(shí)現(xiàn)小程序多個(gè)tab的應(yīng)用,配置屬性如下:完成項(xiàng)目多模塊切換功能步驟-1步驟1:添加新的頁面(在這里我們需要添加關(guān)于“電影”和“我的”兩個(gè)頁面文件)。了更好區(qū)別不同模塊,我們需要在不同頁面.json配置文件中配置模塊的頁面標(biāo)題名稱,例如在posts.json文件中添加相關(guān)配置,示例代碼如下:{"usingComponents":{},"navigationBarTitleText":"發(fā)現(xiàn)"}完成項(xiàng)目多模塊切換功能步驟-2步驟2:在app.json中配置tabBar屬性。"tabBar":{"borderStyle":"white","selectedColor":"#4A6141","color":"#333","backgroundColor":"#fff","position":"bottom","list":[{"pagePath":"pages/posts/posts","text":"發(fā)現(xiàn)","iconPath":"images/icon/blog.png","selectedIconPath":"images/icon/blog-actived.png"},{"pagePath":"pages/movies/movies","text":"電影","iconPath":"images/icon/movie.png","selectedIconPath":"images/icon/movie-actived.png"},{"pagePath":"pages/profile/profile","text":"我的","iconPath":"images/icon/profile.png","selectedIconPath":"images/icon/profile-actived.png"}]},完成項(xiàng)目多模塊切換功能步驟-3步驟3:修改頁面路由跳轉(zhuǎn)的方式。
//處理頁面跳轉(zhuǎn)函數(shù)
goToPostPage:
function
(event)
{
wx.switchTab({url:
'../posts/posts',
success:
function
()
{
console.log("gotoPostSuccess!");
},
fail:
function
()
{
console.log("gotoPostfail!");
},
complete:
function
()
{
console.log("gotoPostcomplete!");
}
})
}wx.switchTab方法的功能描述為跳轉(zhuǎn)到tabBar頁面,并關(guān)閉其他所有非tabBar頁面課堂思考在小程序中路由方法wx.navigateTo和wx.switchTab有什么區(qū)別?任務(wù)二:完成電影首頁功能實(shí)現(xiàn)背景音樂功能文章頁面任務(wù)描述:本小節(jié)的任務(wù)是完成電影模塊的電影首頁顯示功能,在電影模塊總有以下幾個(gè)展示內(nèi)容:(1)電影首頁展示“正在熱映”、“即將上映”、“豆瓣top250”三種類型的電影,每種類型的電影只展示最前面3部。(2)每種電影有一個(gè)“更多”按鈕,點(diǎn)擊將打開一個(gè)新頁面,展示改類型所有的電影。(3)點(diǎn)擊任意一步電影將打開電影詳情頁面。(4)在電影首頁支持對(duì)電影搜索功能。完成電影模塊的顯示功能,我們需要使用微信小程序自定義組件相關(guān)技術(shù)點(diǎn)以及如何是使用第三方自定義組件,同時(shí)電影模塊的數(shù)據(jù)都是來自豆瓣電影開放的API,因此我們還需要使用微信小程序wx.request的API。微信小程序自定義組件優(yōu)勢(shì)-知識(shí)點(diǎn)學(xué)習(xí)小程序頁面元素都是組件組成的,小程序除了提供內(nèi)置的組件之外,從小程序基礎(chǔ)庫版本1.6.3開始,小程序支持簡潔的組件化編程,開發(fā)者可以將頁面內(nèi)的功能模塊抽象成自定義組件,以便在不同的頁面中重復(fù)使用;也可以將復(fù)雜的頁面拆分成多個(gè)低耦合的模塊,有助于代碼維護(hù)。自定義組件在使用時(shí)與基礎(chǔ)組件非常相似。自定義組件定義與使用-知識(shí)點(diǎn)學(xué)習(xí)步驟1:創(chuàng)建組件目錄,同時(shí)創(chuàng)建組件文件創(chuàng)建組件與組件頁面很相似。為了方便管理,首先需要?jiǎng)?chuàng)建一個(gè)名為“componets”目錄,然后選擇”新建Compoent“,開發(fā)工具為組件生成四個(gè)文件:組件邏輯控制.js文件組件配置文件.json組件顯示元素文件.wxml組件顯示樣式文件.wxss步驟2:為組件添加屬性、元素并設(shè)置組件樣式在index.js文件中設(shè)置自定義組件屬性//components/movie/movie.jsComponent({
/***組件的屬性列表*/properties:
{
//定義屬性movie:Object
},
/***組件的初始數(shù)據(jù)*/data:
{
},
/***組件的方法列表*/methods:
{
}})自定義組件定義與使用-知識(shí)點(diǎn)學(xué)習(xí)<!--自定義電影movie組件--><view
class="movie-container">
<!--電影圖片-->
<image
class="movie-img"src="{{movie.movieImagePth}}"></image>
<!--電影標(biāo)題-->
<text
class="movie-title">{{movie.title}}</text>
<!--電影評(píng)分-->
<view
class="rate-container">
<view
class="stars">
<image
src="/images/icon/wx_app_star.png"></image>
<image
src="/images/icon/wx_app_star.png"></image>
<image
src="/images/icon/wx_app_star.png"></image>
<image
src="/images/icon/wx_app_star.png"></image>
<image
src="/images/icon/wx_app_star@half.png"></image>
</view>
<text
class="score">9.5</text>
</view>
</view>/*整體電影信息*/.movie-container
{
display:
flex;
flex-direction:
column;
padding:
0
22rpx;
width:
200rpx;}
/*電影圖片*/.movie-img
{
width:
200rpx;
height:
270rpx;
padding-bottom:
20rpx;}
/*電影標(biāo)題*/.movie-title
{
margin-bottom:
16rpx;
font-size:
24rpx;}
/*評(píng)分樣式*/.rate-container
{
display:
flex;
flex-direction:
row;}
.stars
{
display:
flex;
flex-direction:
row;
height:
17rpx;
margin-right:
24rpx;
margin-top:
6rpx;}
.stars
image
{
padding-left:
3rpx;
height:
17rpx;
width:
17rpx;}.score
{
color:
#4a6141;}在index.wxss文件中添加自定義組件樣式在index.wxml文件中添加自定義組件元素自定義組件定義與使用-知識(shí)點(diǎn)學(xué)習(xí){
"usingComponents":
{
"hp-movie":"/components/movie/index"
}}在moives.json中配置引用自定義組件
<!--電影列表-->
<view
class="movies-container">
<hp-movie
movie="{{movie}}"></hp-movie>
<hp-movie
movie="{{movie}}"></hp-movie>
<hp-movie
movie="{{movie}}"></hp-movie>
</view>在moives.wxml文件中使用自定義組件電影首頁引用movie組件展示效果如何使用第三方自定義組件-知識(shí)點(diǎn)學(xué)習(xí)步驟1:在項(xiàng)目中使用npminit命令構(gòu)建項(xiàng)目使用npminit命令構(gòu)建項(xiàng)目npm初始化項(xiàng)目目錄結(jié)構(gòu)自定義組件定義與使用-知識(shí)點(diǎn)學(xué)習(xí)步驟2:在項(xiàng)目中使用npminstalllin-ui命令安裝Lin-UI使用npminstalllin-ui命令安裝Lin-UI構(gòu)建npm命令安裝lin-UI后項(xiàng)目目錄結(jié)構(gòu)小程序加載服務(wù)器數(shù)據(jù)-知識(shí)點(diǎn)學(xué)習(xí)在微信小程序中使用wx.request(Object)方法,發(fā)起HTTPS網(wǎng)絡(luò)請(qǐng)求獲取服務(wù)器數(shù)據(jù),Object參數(shù)常用屬性為:url類型:string描述:開發(fā)者服務(wù)器接口地址。data類型:string/object/ArrayBuffer描述:請(qǐng)求的參數(shù)。header類型:Object描述:設(shè)置請(qǐng)求的header,header中不能設(shè)置Referer。content-type
默認(rèn)為
application/json。method類型:string描述:HTTP請(qǐng)求方法。注意,method的取值必須大寫timeout類型:number描述:超時(shí)時(shí)間,單位為毫秒。默認(rèn)值為60000。dataType類型:string描述:返回的數(shù)據(jù)格式success
類型:function描述:接口調(diào)用成功的回調(diào)函數(shù)fail類型:function描述:接口調(diào)用失敗的回調(diào)函數(shù)complete類型:function描述:接口調(diào)用完成的回調(diào)函數(shù)其中success回調(diào)函數(shù)的參數(shù)如下:data類型:string/Object/Arraybuffer描述:開發(fā)者服務(wù)器返回的數(shù)據(jù)。statusCode類型:number描述:開發(fā)者服務(wù)器返回的HTTP狀態(tài)碼。header類型:Object描述:開發(fā)者服務(wù)器返回的HTTPResponseHeader。cookies類型:Array.<string>描述:開發(fā)者服務(wù)器返回的cookies,格式為字符串?dāng)?shù)組。success參數(shù)使用wx.request方法加強(qiáng)服務(wù)器數(shù)據(jù)-知識(shí)店學(xué)習(xí)在微信小程序中使用wx.request(Object)方法,在默認(rèn)情況只支持https的請(qǐng)求方式,如果必須使用http請(qǐng)求,需要在開發(fā)工具設(shè)置不合法域名onLoad:
function
(options)
{
const
movie
=
{
"title":
"幕后玩家",
"movieImagePth":
"/images/movie/move01.jpg",
"score":8.5,
"stars":4.5
}
//通過http請(qǐng)求獲得服務(wù)器數(shù)據(jù)(數(shù)據(jù)以json格式進(jìn)行返回)
wx.request({url:
'/v2/movie/in_theaters',data:{start:1,count:3
},method:'GET',header:{"content-type":"json"},
success:(res)=>{
console.log(res);
}
})示例代碼控制臺(tái)查看數(shù)據(jù)步驟1:從服務(wù)器加載數(shù)據(jù)完成電影列表顯示功能步驟-1//
基于不同url對(duì)http請(qǐng)求獲得服務(wù)器數(shù)據(jù)進(jìn)行封裝
bindMoviesDataByCategory(url,
data,
settedKey,
categoryTitle)
{
//
通過http請(qǐng)求獲得服務(wù)器數(shù)據(jù)(數(shù)據(jù)以json格式進(jìn)行返回)
wx.request({
url:
url,
data:
data,
method:
'GET',
header:
{
"content-type":
"json"
},
success:
(res)
=>
{
cessMovieData(res.data,
settedKey,
categoryTitle);
}
})
},獲得服務(wù)器數(shù)據(jù)并對(duì)數(shù)據(jù)進(jìn)行封裝的邏輯處理處理電影數(shù)據(jù)處理方法//
處理電影首先顯示電影數(shù)據(jù)
processMovieData(httpData,
settedKey,
categoryTitle)
{
console.log('httpData',
httpData);
var
movies
=
[];
for
(let
i
in
httpData.subjects)
{
let
subject
=
httpData.subjects[i];
let
title
=
subject.title;
let
stars
=
subject.rating.stars
/
10;
let
score
=
subject.rating.average;
console.log("starts:",
stars);
if
(title.length
>=
6)
{
//
設(shè)置標(biāo)題顯示長度,超過6個(gè)字符進(jìn)行截?cái)嗍褂?..進(jìn)行代替
title
=
title.substring(0,
6)
+
'...';
}
var
temp
=
{
title:
title,
stars:
stars,
score:
score,
movieImagePth:
subject.images.large,
movieId:
subject.id
}
movies.push(temp);
}
var
bindData
=
{};
bindData[settedKey]
=
{
"categoryTitle":
categoryTitle,
"movies":
movies
}
this.setData(bindData);
},步驟2:自定義movie-list組件完成電影列表顯示功能步驟-2Component({/***組件的屬性列表*/properties:{title:{type:String,value:''},movieList:{type:Array,value:[]}},
/***組件的初始數(shù)據(jù)*/data:{
},
/***組件的方法列表*/methods:{
}})添加movie-list組件后目錄結(jié)構(gòu)movie-list組件邏輯處理<viewclass="movie-list-container"><viewclass="movie-head"><textclass="slogan">{{title}}</text><viewclass="more"data-category="{{title}}"><textclass="more-text">更多</text><imageclass="more-img"src="/images/icon/wx_app_arrow_right.png"></image></view></view><!--單個(gè)欄目中顯示電影列表--><viewclass="movies-container"><!--每個(gè)電影信息--><blockwx:for="{{movieList}}"wx:for-item="movie"wx:key="movieId"><!--使用自定義組件--><hp-moviemovie="{{movie}}"></hp-movie></block></view></view>movie-list組件頁面元素步驟3:在moives頁面引用moive-list組件完成電影列表顯示功能步驟-3{
"usingComponents":
{
"hp-movie":"/components/movie/index",
"hp-movieList":"/components/movie-list/index"
},
"navigationBarTitleText":
"電影"}在movies頁面配置自定義組件<view
class="container">
<!--電影欄目列表-->
<view
class="movie-container">
<!--單個(gè)欄目電影列表(正在熱映)-->
<hp-movieList
bind:tap="onGotoMore"
data-type="in_theaters"
title="{{inTheaters.categoryTitle}}"
movieList="{{inTheaters.movies}}"></hp-movieList>
<!--單個(gè)欄目電影列表(即將上映)-->
<hp-movieList
bind:tap="onGotoMore"
data-type="coming_soon"
title="{{comingSoon.categoryTitle}}"
movieList="{{comingSoon.movies}}"></hp-movieList>
<!--單個(gè)欄目電影列表(豆瓣top250)-->
<hp-movieList
bind:tap="onGotoMore"
data-type="top250"
title="{{top250.categoryTitle}}"
movieList="{{top250.movies}}"></hp-movieList>
</view></view>在moives頁面引用自定義組件任務(wù)三:完成電影搜索功能任務(wù)描述:任務(wù)為用戶提供一個(gè)電影搜索的功能,其業(yè)務(wù)邏輯非常簡單,在搜索的輸入框中輸入搜索的電影名稱,然后確定在當(dāng)前頁面顯示搜索結(jié)果。在這里我們并沒有選擇使用一個(gè)新的頁面完成此電影搜索功能,電影的搜索位于電影首頁。當(dāng)用戶進(jìn)行搜索時(shí),顯示搜索結(jié)果時(shí),電影首頁的資訊信息被隱藏;相反,當(dāng)退出電影搜索時(shí),電影搜索面板被隱藏,而電影資訊被顯示,其實(shí)現(xiàn)步驟:實(shí)現(xiàn)電影首頁搜索頁面效果。處理用戶激活搜索框與退出搜索。處理用戶輸入搜索關(guān)鍵字進(jìn)行搜索電影搜索效果圖完成電影搜索功能實(shí)現(xiàn)步驟-1步驟1:實(shí)現(xiàn)電影首頁搜索頁面效果。<!--搜索輸入框-->
<view
class="search">
<icon
type="search"class="search-img"size="13"color="#405f80"></icon>
<input
type="text"placeholder="乘風(fēng)破浪、西游伏妖篇"placeholder-class="placeholder"bindfocus="onBindFocus"value="{{inputValue}}"bindconfirm="onBindConfirm"/>
<image
wx:if="{{searchPanelShow}}"src="/images/icon/wx_app_xx.png"class="xx-img"catchtap="onCancelImgTap"></image>
</view>在movies.wxml中添加電影搜索框顯示的內(nèi)容/*電影搜索樣式*/
.search
{
background-color:
#f2f2f2;
height:
80rpx;
width:
100%;
display:
flex;
flex-direction:
row;}
.search-img
{
margin:
auto
0
auto
20rpx;}
.search
input
{
height:
100%;
width:
600rpx;
margin-left:
20px;
font-size:
28rpx;}
.placeholder
{
font-size:
14px;
color:
#d1d1d1;
margin-left:
20rpx;}
.search-panel{
position:absolute;
top:80rpx;}
.xx-img{
height:
30rpx;
width:
30rpx;
margin:auto
0
auto
10rpx;}
.search-container{
display:
flex;
flex-direction:
row;
flex-wrap:
wrap;
padding:
30rpx0rpx;
justify-content:
space-between;}
.search-container::after{
content:'';
width:200rpx;}完成電影搜索功能實(shí)現(xiàn)步驟-2步驟2:處理用戶激活搜索框與退出搜索。當(dāng)用戶激活搜索輸入框,隱藏電影資訊面板,顯示取消搜索按鈕(等待用戶輸入內(nèi)容)
//獲得輸入焦點(diǎn),隱藏電影資訊面板,顯示取消搜索按鈕(等待用戶輸入內(nèi)容)
onBindFocus()
{
console.log("===onBindFocus=====");
//設(shè)置取消按鈕顯示,并取消Movie-list顯示容器
this.setData({
//控制取消按鈕searchPanelShow:
true,
//控制搜索結(jié)果容器是否顯示
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代陶瓷材料在商業(yè)空間裝飾的應(yīng)用與工藝
- 單板加工職業(yè)技能競(jìng)賽組織與成果展示考核試卷
- 木材加工中的技術(shù)進(jìn)步與裝備升級(jí)考核試卷
- 社交禮儀基礎(chǔ)如何成為更好的對(duì)話者
- 周密改進(jìn)年度工作計(jì)劃
- 后疫情時(shí)代的品牌建設(shè)秘訣計(jì)劃
- 基礎(chǔ)知識(shí)班主任的基礎(chǔ)知識(shí)講解計(jì)劃
- 2025年01月江西南昌市青山湖區(qū)審計(jì)局面向社會(huì)公開招聘工作人員4人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解-1
- 文案采購合同范本
- 安寧療護(hù)中的臨終患者生理變化考核試卷
- 現(xiàn)金調(diào)撥系統(tǒng)操作手冊(cè)教學(xué)課件
- 學(xué)校物業(yè)管理宿舍管理方案995
- PFMEA-失效模式分析案例
- 荔枝依舊年年紅
- SMT貼片線項(xiàng)目可行性研究報(bào)告
- 新加坡公司法-英文版
- 第五版-FMEA-新版FMEA【第五版】
- 口腔修復(fù)學(xué)第三章牙體缺損的修復(fù)
- 建設(shè)部環(huán)衛(wèi)勞動(dòng)定額
- 2023年棗莊科技職業(yè)學(xué)院單招綜合素質(zhì)模擬試題及答案解析
- 美容心理學(xué)概述(美容心理學(xué)課件)
評(píng)論
0/150
提交評(píng)論