微信小程序?qū)W習(xí)筆記之函數(shù)定義、頁(yè)面渲染圖文詳解
前面一篇介紹了微信小程序目錄結(jié)構(gòu)、基本配置。這里再來(lái)介紹一下函數(shù)定義、頁(yè)面渲染。
小程序邏輯app.js:定義App函數(shù)用來(lái)注冊(cè)一個(gè)小程序,包含全局?jǐn)?shù)據(jù)和函數(shù),指定小程序的生命周期回調(diào)等。整個(gè)小程序只有一個(gè) App 實(shí)例,全部頁(yè)面共享使用。
//app.js App({ onLaunch: function () { // 展示本地存儲(chǔ)能力 var logs = wx.getStorageSync('logs') || [] logs.unshift(Date.now()) wx.setStorageSync('logs', logs) // 登錄 wx.login({ success: res => { // 發(fā)送 res.code 到后臺(tái)換取 openId, sessionKey, unionId } }) // 獲取用戶信息 wx.getSetting({ success: res => { if (res.authSetting['scope.userInfo']) { // 已經(jīng)授權(quán),可以直接調(diào)用 getUserInfo 獲取頭像昵稱,不會(huì)彈框 wx.getUserInfo({ success: res => { // 可以將 res 發(fā)送給后臺(tái)解碼出 unionId this.globalData.userInfo = res.userInfo // 由于 getUserInfo 是網(wǎng)絡(luò)請(qǐng)求,可能會(huì)在 Page.onLoad 之后才返回 // 所以此處加入 callback 以防止這種情況 if (this.userInfoReadyCallback) { this.userInfoReadyCallback(res) } } }) } } }) }, globalData: { userInfo: null } })
生命周期函數(shù):
屬性 | 類型 | 描述 | 觸發(fā)時(shí)機(jī) |
---|---|---|---|
onLaunch | Function | 生命周期回調(diào)—監(jiān)聽小程序初始化 | 小程序初始化完成時(shí)(全局只觸發(fā)一次) |
onShow | Function | 生命周期回調(diào)—監(jiān)聽小程序顯示 | 小程序啟動(dòng),或從后臺(tái)進(jìn)入前臺(tái)顯示時(shí) |
onHide | Function | 生命周期回調(diào)—監(jiān)聽小程序隱藏 | 小程序從前臺(tái)進(jìn)入后臺(tái)時(shí) |
onError | Function | 錯(cuò)誤監(jiān)聽函數(shù) | 小程序發(fā)生腳本錯(cuò)誤,或者 api 調(diào)用失敗時(shí)觸發(fā),會(huì)帶上錯(cuò)誤信息 |
onPageNotFound | Function | 頁(yè)面不存在監(jiān)聽函數(shù) | 小程序要打開的頁(yè)面不存在時(shí)觸發(fā),會(huì)帶上頁(yè)面信息回調(diào)該函數(shù) |
其他 | Any | 開發(fā)者可以添加任意的函數(shù)或數(shù)據(jù)到 Object 參數(shù)中,用 this 可以訪問 |
頁(yè)面js:
頁(yè)面js中定義分享函數(shù),定義之后右上角菜單才可以分享:
Page({ onShareAppMessage: function (res) { if (res.from === 'button') { // 來(lái)自頁(yè)面內(nèi)轉(zhuǎn)發(fā)按鈕 console.log(res.target) } return { title: '自定義轉(zhuǎn)發(fā)標(biāo)題', path: '/page/user?id=123', imageUrl: 'https://msllws.top/Public/uploads/2018-09-19/5ba1efaec1b1f.jpg' } } })
頁(yè)面js中調(diào)用全局函數(shù):
var AppInstance = getApp() console.log(AppInstance.globalData)
工具欄utils.js:存放常用的工具函數(shù),例如日期格式化、時(shí)間格式化函數(shù)。定義后通過(guò)module.exports注冊(cè),在其他頁(yè)面才可以使用。
練習(xí):做出如下圖頁(yè)面及樣式
weather.js:
Page({ data: { temp:"4℃", low:"-1℃", high:"10℃", type:"晴", city:"北京", week:"星期四", weather:"無(wú)持續(xù)風(fēng)行 微風(fēng)級(jí)" } })
weather.wxml:
<view class="content"> <view class="today"> <view class="info"> <view class="temp">{{temp}}</view> <view class='lowhigh'>{{low}}</view> <view class='type'>{{type}}</view> <view class='city'>{{city}}</view> <view class='week'>{{week}}</view> <view class='weather'>{{weather}}</view> </view> </view> </view>
weather.wxss:
.content{ font-family: 微軟雅黑,宋體; font-size:14px; background-size: cover; height: 100%; width: 100%; color: #333333; } .today{ padding-top: 70rpx; height: 50%; } .temp{ font-size: 80px; text-align: center; } .city{ font-size:20px; text-align: center; margin-top: 20rpx; margin-right: 10rpx; } .lowhigh{ font-size: 12px; text-align: center; margin-top: 30rpx; } .type{ font-size: 16px; text-align: center; margin-top: 30rpx; } .week{ font-size: 12px; text-align: center; margin-top: 30rpx; } .weather{ font-size: 12px; text-align: center; margin-top: 20rpx; }
數(shù)據(jù)綁定:
<!--wxml--> <view> {{message}} </view>
page.js:
Page({ data: { message: 'Hello MINA!' } })
列表渲染:
<!--wxml--> <view wx:for="{{array}}"> {{item}} </view>
page.js
Page({ data: { array: [1, 2, 3, 4, 5] } })
條件渲染:
<!--wxml--> <view wx:if="{{view == 'WEBVIEW'}}"> WEBVIEW </view> <view wx:elif="{{view == 'APP'}}"> APP </view> <view wx:else="{{view == 'MINA'}}"> MINA </view>
// page.js Page({ data: { view: 'MINA' } })
模板:
<!--wxml--> <template name="staffName"> <view> FirstName: {{firstName}}, LastName: {{lastName}} </view> </template> <template is="staffName" data="{{...staffA}}"></template> <template is="staffName" data="{{...staffB}}"></template> <template is="staffName" data="{{...staffC}}"></template>
// page.js Page({ data: { staffA: {firstName: 'Hulk', lastName: 'Hu'}, staffB: {firstName: 'Shang', lastName: 'You'}, staffC: {firstName: 'Gideon', lastName: 'Lin'} } })
事件:
<view bindtap="add"> {{count}} </view>
Page({ data: { count: 1 }, add: function(e) { this.setData({ count: this.data.count + 1 }) } })
希望本文所述對(duì)大家微信小程序設(shè)計(jì)有所幫助。
相關(guān)文章
js實(shí)現(xiàn)input框文字動(dòng)態(tài)變換顯示效果
這篇文章主要介紹了js實(shí)現(xiàn)input框文字動(dòng)態(tài)變換顯示效果,涉及javascript隨機(jī)字符串與中文的動(dòng)態(tài)切換顯示效果,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08百度坐標(biāo)(BD09)、國(guó)測(cè)局坐標(biāo)(火星坐標(biāo),GCJ02)、和WGS84坐標(biāo)系之間的轉(zhuǎn)換
這篇文章主要介紹了百度坐標(biāo)(BD09)、國(guó)測(cè)局坐標(biāo)(火星坐標(biāo),GCJ02)、和WGS84坐標(biāo)系之間的轉(zhuǎn)換的相關(guān)資料,需要的朋友可以參考下2016-02-02event.x,event.clientX,event.offsetX區(qū)別
event.x,event.clientX,event.offsetX區(qū)別,需要的朋友可以參考下。2006-11-11js實(shí)現(xiàn)的簡(jiǎn)單圖片浮動(dòng)效果完整實(shí)例
這篇文章主要介紹了js實(shí)現(xiàn)的簡(jiǎn)單圖片浮動(dòng)效果,以完整實(shí)例形式分析了javascript實(shí)現(xiàn)圖片定時(shí)漂浮移動(dòng)功能的方法,涉及javascript定時(shí)函數(shù)與數(shù)值動(dòng)態(tài)運(yùn)算相關(guān)技巧,需要的朋友可以參考下2016-05-05JavaScript原型和原型鏈與構(gòu)造函數(shù)和實(shí)例之間的關(guān)系詳解
這篇文章主要介紹了JavaScript原型和原型鏈與構(gòu)造函數(shù)和實(shí)例之間的關(guān)系,每個(gè)對(duì)象都連接到一個(gè)原型對(duì)象,并且它可以從中繼承屬性。所有通過(guò)對(duì)象字面量創(chuàng)建的對(duì)象都連接到object.prototype,它是JavaScript中的標(biāo)配對(duì)象2022-07-07基于Bootstrap 3 JQuery及RegExp的表單驗(yàn)證功能
這篇文章主要介紹了基于Bootstrap 3 JQuery及RegExp的表單驗(yàn)證功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02javascript顯式類型轉(zhuǎn)換實(shí)例分析
這篇文章主要介紹了javascript顯式類型轉(zhuǎn)換,實(shí)例分析了javascript實(shí)現(xiàn)類型轉(zhuǎn)換的常用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04