微信小程序項目總結(jié)《三》閱讀首頁柑蛇、閱讀詳情開發(fā)

第五章 閱讀首頁

小程序的模板templete組件以及wxml里運用if循環(huán)和理解相對路徑絕對路徑的區(qū)別還有swiper組件的運用各種點擊事件的處理和交互" style="margin: 0.8em 0px; padding: 0px; box-sizing: border-box; font-weight: 100; color: rgb(85, 85, 85); font-family: 'microsoft yahei'; line-height: 35px; background-color: rgb(255, 255, 255);">在寫這部分代碼的時候蹦哼,我用的是死數(shù)據(jù),但后來發(fā)現(xiàn)數(shù)據(jù)填充的時候太凌亂,就模仿真實向服務(wù)器請求數(shù)據(jù)的模式睛挚,將所有數(shù)據(jù)提取到外面,用數(shù)據(jù)綁定的方式在邏輯層獲取數(shù)據(jù)溃蔫;其中用到了小程序的模板templete組件健提,以及wxml里運用if循環(huán)和理解相對路徑、絕對路徑的區(qū)別伟叛,還有swiper組件的運用私痹,各種點擊事件的處理和交互。

post.wxml

微信小程序中的swiper組件真的是簡單方便提供了頁面中圖片文字等滑動的效果" style="margin: 0.8em 0px; padding: 0px; box-sizing: border-box; font-weight: 100; color: rgb(85, 85, 85); font-family: 'microsoft yahei'; line-height: 35px; background-color: rgb(255, 255, 255);">1.微信小程序中的swiper組件真的是簡單方便统刮,提供了頁面中圖片文字等滑動的效果紊遵。

這里的就是一個滑塊視圖容器;而就是你希望滑動的東西侥蒙,可以是文字也可以是image暗膜,其中swiper有很多屬性。常用的有

屬性名 默認(rèn)值 作用

2.indicator-dots false 是否顯示面板指示點

3.indicator-color rgba(0, 0, 0, .3) 指示點的顏色

4.indicator-active-color #000000 當(dāng)前選中的指示點顏色

5.autoplay false 是否自動播放

6.intervaly 5000 自動切換時間間隔

這里vertical=”true”在官方文檔中沒有提到鞭衩,定義這個可以上下滑動学搜;還有一點需要注意vertical=”false”時,仍然是上下滑動论衍,原因就是微信小程序在解析時將”false”看成字符串瑞佩,只要字符串不為空,就為真饲齐。所以我們需要這樣寫:vertical=”{{false}}”

2.在組件上使用wx:for控制屬性綁定一個數(shù)組钉凌,即可使用數(shù)組中各項的數(shù)據(jù)重復(fù)渲染該組件。(1)可以使用wx:for-item指定數(shù)組當(dāng)前元素的變量名捂人。(2)可以使用wx:for-index指定數(shù)組當(dāng)前下標(biāo)的變量名.(3)wx:for用在標(biāo)簽上御雕,以渲染一個包含多節(jié)點的結(jié)構(gòu)塊。

3.絕對路徑是指文件在硬盤上真正存在的路徑滥搭。所謂相對路徑酸纲,就是相對于自己的目標(biāo)文件位置。相對路徑使用“/”字符作為目錄的分隔字符瑟匆,而絕對路徑可以使用“\”或“/”字符作為目錄的分隔字符闽坡。

4、 Template模板

WXML提供模板(Template)愁溜,可以在模板中定義代碼片段疾嗅,然后在不同的地方使用∶嵯螅可以保證格式以及數(shù)據(jù)的相同代承。

(1)-定義模板

使用標(biāo)簽定義模板,并將模板名稱命名為tempName渐扮,賦值給屬性name论悴。在標(biāo)簽內(nèi)部掖棉,定義模板結(jié)構(gòu)。

(2)-使用模板

使用標(biāo)簽膀估,在需要使用模板的地方幔亥。如果要用到j(luò)s文件中的數(shù)據(jù),則需要添加data屬性察纯。

(3)-is屬性

is屬性不僅可以靜態(tài)的指向渲染的模板帕棉,也可以使用Mustache語法,來動態(tài)決定具體需要渲染哪個模板捐寥。

(4)-模板的引用

如上都是在同一個wxml文件中定義和引用模板笤昨,而模板的定義和引用是可以分開的。即在一個文件中定義模板握恳,而在其他一個或多個文件wxml文件中都可以使用定義好的模板。從外部文件中引用模板捺僻,使用標(biāo)簽乡洼。同樣使用is屬性來指向要引用的標(biāo)簽。

(5)要在index.wxml中使用template中定義的模板匕坯,則需要先在index中利用import來導(dǎo)入該模板束昵。

(6)要注意import作用域,其僅僅引用目標(biāo)文件中template葛峻。如:C import B锹雏,B import A,在C中可以使用B定義的template术奖,在B中可以使用A定義的template礁遵,但是C不能使用A定義的template。

post-template.wxml

這個就是文章列表的template模板

data.js

數(shù)據(jù)層單獨寫所有數(shù)據(jù)的文件

var local_database = [? ? {date:"Apr 11 2017",? ? ? ? title:"陸壹佛爺斬獲北京市“電腦鼠走迷宮”競賽冠軍",? ? ? ? post_img:"/images/post/match.jpg",? ? ? ? content:"2014年12月21日采记,“2014北京市電腦屬走迷宮競賽”在北京交通大學(xué)拉開帷幕佣耐。此次大賽吸引了北京交通大學(xué)、北京科技大學(xué)唧龄、中國農(nóng)業(yè)大學(xué)等高校53只隊伍兼砖,其中我校信息工程學(xué)院派出5只隊伍參加了本次比賽。",? ? ? ? collect_num:"289",? ? ? ? view_num:"482",? ? ? ? author_img:"/images/avatar/hao.jpg",? ? ? ? img_condition:true,? ? ? ? headImgSrc:"/images/post/match1.jpg",? ? ? ? headImgSrc1:"/images/post/match2.jpg",? ? ? ? headImgSrc2:"/images/post/match3.jpg",? ? ? ? author:"陸壹佛爺",dateTime:"16小時前",? ? ? ? detail:"2014年12月21日既棺,“2014北京市電腦屬走迷宮競賽”在北京交通大學(xué)拉開帷幕讽挟。此次大賽吸引了北京交通大學(xué)、北京科技大學(xué)丸冕、中國農(nóng)業(yè)大學(xué)耽梅、北京城市學(xué)院等高校53只隊伍,其中我校信息工程學(xué)院派出5只隊伍參加了本次比賽晨仑。\n\n電腦鼠的英文名稱為Micromouse褐墅,實際上是一個由微處理器控制的拆檬,集感知、判斷妥凳、行走功能于一體竟贯,能夠自動尋找最佳路徑到達(dá)目的地的小型機器人。它可以在“迷宮”中自動感知并記憶迷宮地圖逝钥,通過一定的算法屑那,尋找一條最佳路徑,以最快的速度到達(dá)目的地艘款。1997年持际,在美國舉辦了第一屆電腦鼠競賽,隨后哗咆,電腦鼠競賽傳入歐洲蜘欲,首屆歐洲電腦鼠競賽于1980年在倫敦舉辦,之后英國的電腦鼠比賽便由電子工程協(xié)會(IEE)主辦晌柬。1980年11月日本電腦鼠協(xié)會(JMA)在東京舉辦了第一屆競賽姥份,此后,日本每年都要舉辦一屆電腦鼠競賽年碘。我國臺灣也于1986年10月舉辦了首屆電腦鼠比賽〕呵福現(xiàn)在國際電工和電子工程學(xué)會(IEEE)每年都要舉辦一次國際性的電腦鼠走迷宮競賽,各國選手報名踴躍屿衅,主要是大學(xué)生埃难。我國于2007年引入該項賽事。\n\n在通信工程專業(yè)田小平老師的指導(dǎo)下涤久,參賽隊員經(jīng)過3個多月的認(rèn)真準(zhǔn)備凌简,包括學(xué)習(xí)“電腦鼠”的硬件組成和軟件調(diào)試剿配,各代表隊隊員互幫互助矾睦,成功的實現(xiàn)了五只“電腦鼠”走迷宮的目的箱歧。\n經(jīng)過一個下午的激烈角逐,5只代表隊均獲得佳績栓拜,其中一等獎1項座泳、二等獎3項、三等獎1項幕与。\n\n一等獎:韋海同(通122)挑势、李文敬(通121)、劉春衫(通122)\n\n此項比賽是我校第一次參加啦鸣,我院學(xué)生的科研與創(chuàng)新精神受到了主辦方的稱贊潮饱,為我院增添了榮譽。\n\n信息工程學(xué)院 通信工程系田小平供稿\n2014年12月23日",? ? ? ? music: {? ? ? ? ? ? dataUrl:'http://ws.stream.qqmusic.qq.com/M500001VfvsJ21xFqb.mp3?guid=ffffffff82def4af4b12b3cd9337d5e7&uin=346897220&vkey=6292F51E1E384E061FF02C31F716658E5C81F5594D561F2E88B854E81CAAB7806D5E4F103E55D33C16F3FAC506D1AB172DE8600B37E43FAD&fromtag=46',? ? ? ? ? ? title:"此時此刻-許巍",? ? ? ? ? ? coverImgUrl:"http://y.gtimg.cn/music/photo_new/T002R300x300M000003rsKF44GyaSk.jpg?max_age=2592000",? ? ? ? },? ? ? ? postId:0} ]

post.js

從data數(shù)據(jù)層獲取數(shù)據(jù)之后诫给,完成文章列表的整個頁面數(shù)據(jù)部署香拉,然后觸發(fā)點擊事件啦扬,跳轉(zhuǎn)子頁面到文章詳情。接下來完成文章詳情的具體頁面編寫和具體文章id的自動識別凫碌。

第六章 閱讀詳情

post-detail.wxml

post-detail.js

varpostsData =require('../../../data/posts-data.js')varapp = getApp();

Page({

data: {

isPlayingMusic:false,

},

setMusicMonitor:function(){varthat =this;

wx.onBackgroundAudioPlay(function(){// callbackthat.setData({

isPlayingMusic:true})

app.globalData.g_isPlayingMusic =true;

app.globalData.g_currentMusicPostId = that.data.currentPostId;

})

wx.onBackgroundAudioPause(function(){// callbackthat.setData({

isPlayingMusic:false})

app.globalData.g_isPlayingMusic =false;

app.globalData.g_currentMusicPostId =null;

});

wx.onBackgroundAudioStop(function(){// callbackthat.setData({

isPlayingMusic:false})

app.globalData.g_isPlayingMusic =false;

app.globalData.g_currentMusicPostId =null;

});

},

onLoad:function(option){// 生命周期函數(shù)--監(jiān)聽頁面加載varpostId = option.id;this.data.currentPostId = postId;varpostData = postsData.postList[postId];this.setData({

postData: postData

})varpostsCollected = wx.getStorageSync('posts_Collected');if(postsCollected) {varpostcollected = postsCollected[postId];this.setData({

collected: postcollected

})

}else{varpostsCollected = {};

postsCollected[postId] =false;

wx.setStorageSync('posts_Collected', postsCollected);

}if(app.globalData.g_isPlayingMusic && app.globalData.g_currentMusicPostId === postId) {this.setData({

isPlayingMusic:true,

})

}this.setMusicMonitor();

},

onCollectionTap:function(event){varpostsCollected = wx.getStorageSync('posts_Collected');varpostCollected = postsCollected[this.data.currentPostId];//收藏變成未收藏扑毡,未收藏變成收藏postCollected = !postCollected;

postsCollected[this.data.currentPostId] = postCollected;//更新文章是否的緩存值wx.setStorageSync('posts_Collected', postsCollected);//更新數(shù)據(jù)綁定變量,從而實現(xiàn)切換圖片this.setData({

collected: postCollected

})//還有showModal APIwx.showToast({

title: postCollected ?"收藏成功":"取消成功",

duration:1000,

icon:"success"})

},

onShareTap:function(event){varitemList = ["分享給微信好友","分享到朋友圈","分享到Facebook","分享到Y(jié)ouTube"];

wx.showActionSheet({

itemList: itemList,

itemColor:"#405f80",

success:function(res){// res.cancel? 用戶是不是點擊了取消按鈕// res.tapIndex 數(shù)組元素的序號盛险,從0開始wx.showModal({

title:"您"+ itemList[res.tapIndex],

content:"您是否取消瞄摊?"+ res.cancel +"可能無法實現(xiàn)分享功能,有待研究"})

}

})

},

onMusicTap:function(event){varcurrentPostId =this.data.currentPostId;varpostData = postsData.postList[currentPostId];varisPlayingMusic =this.data.isPlayingMusic;if(isPlayingMusic) {

wx.pauseBackgroundAudio();this.setData({

isPlayingMusic:false});// this.data.isPlayingMusic = false;}else{

wx.playBackgroundAudio({

dataUrl: postData.music.dataUrl,

title: postData.music.title,

coverImgUrl: postData.music.coverImgUrl,

})this.setData({

isPlayingMusic:true});

}

}

})


在文章詳情頁面苦掘,實現(xiàn)了swiper組件顯示輪滑圖片换帜,實現(xiàn)了緩存,判斷用戶收藏的邏輯鹤啡,添加因為播放功能并且實現(xiàn)播放邏輯的判斷惯驼。

1.在H5之前,緩存一般都是用cookie递瑰,但是cookie的存儲空間太小跳座。于是,H5增加了新的緩存機制泣矛,即localstorage 和 sessionstorage,在微信小程序中禾蚕,數(shù)據(jù)緩存其實就和localstorage 的原理差不多您朽。每個微信小程序都有自己的本地緩存,可以通過wx.setStorage(wx.setStorageSync)换淆、wx.getStorage(wx.getStorageSync)哗总、wx.clearStorage(wx.clearStorageSync)可以對本地緩存進(jìn)行設(shè)置、獲取和清理倍试。本地緩存最大為10MB讯屈。

注意: localStorage 是永久存儲的,但是不建議將關(guān)鍵信息全部存在 localStorage县习,以防用戶換設(shè)備的情況涮母。(具體同步異步的問題還有各種方法的運用看官方文檔)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市躁愿,隨后出現(xiàn)的幾起案子叛本,更是在濱河造成了極大的恐慌,老刑警劉巖彤钟,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件来候,死亡現(xiàn)場離奇詭異,居然都是意外死亡逸雹,警方通過查閱死者的電腦和手機营搅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進(jìn)店門云挟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人转质,你說我怎么就攤上這事园欣。” “怎么了峭拘?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵俊庇,是天一觀的道長。 經(jīng)常有香客問我鸡挠,道長辉饱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任拣展,我火速辦了婚禮彭沼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘备埃。我一直安慰自己姓惑,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布按脚。 她就那樣靜靜地躺著于毙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪辅搬。 梳的紋絲不亂的頭發(fā)上唯沮,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天,我揣著相機與錄音堪遂,去河邊找鬼介蛉。 笑死,一個胖子當(dāng)著我的面吹牛溶褪,可吹牛的內(nèi)容都是我干的币旧。 我是一名探鬼主播,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼猿妈,長吁一口氣:“原來是場噩夢啊……” “哼吹菱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起于游,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤毁葱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后贰剥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體倾剿,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了前痘。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凛捏。...
    茶點故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖芹缔,靈堂內(nèi)的尸體忽然破棺而出坯癣,到底是詐尸還是另有隱情,我是刑警寧澤最欠,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布示罗,位于F島的核電站,受9級特大地震影響芝硬,放射性物質(zhì)發(fā)生泄漏蚜点。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一拌阴、第九天 我趴在偏房一處隱蔽的房頂上張望绍绘。 院中可真熱鬧,春花似錦迟赃、人聲如沸陪拘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽左刽。三九已至,卻和暖如春酌媒,著一層夾襖步出監(jiān)牢的瞬間悠反,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工馍佑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人梨水。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓拭荤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親疫诽。 傳聞我的和親對象是個殘疾皇子舅世,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,492評論 2 348

推薦閱讀更多精彩內(nèi)容