微信小程式學習筆記(一)之框架及工具
阿新 • • 發佈:2018-11-29
文章目錄
一、app.json的配置
1. 決定頁面檔案路徑
微信小程式的頁面路徑都需要在app.json配置檔案中配置一下。配置完頁面路徑後,會自動生成對應的資料夾及檔案。
"pages":[
"pages/index/index",
"pages/logs/logs",
"pages/icon/icon"
]
2. 配置視窗表現
"window":{ "backgroundColor":"#000", //視窗的背景色 "backgroundTextStyle":"light", //下拉背景字型、loading圖樣式,僅dark/light "navigationBarBackgroundColor": "#fff", //導航欄背景顏色 "navigationBarTitleText": "Ocean", //導航欄標題文字 "navigationBarTextStyle":"black" //導航欄標題文字顏色,僅black/white "enablePullDownRefresh":true //是否開啟下拉重新整理 }
3. 配置tab標籤導航
"tabBar":{
"color":"#000000", //tab上的文字預設顏色
"backgroundColor":"#ffffff", //tab的背景色
"selectedColor": "#3cc51f", //tab上的文字選中時的顏色
"position":"bottom",
"borderStyle":"black",
"list": [{
"pagePath": "pages/index/index",
"iconPath": "image/首頁.png",
"selectedIconPath": "image/首頁.png",
"text": "首頁"
},{
"pagePath": "pages/logs/logs",
"text": "日誌",
"iconPath": "image/遊記.png",
"selectedIconPath": "image/遊記.png"
},{
"pagePath": "pages/icon/icon",
"iconPath": "image/想去.png",
"selectedIconPath": "image/想去.png",
"text": "圖示"
}
]
}
注意: pages裡面的第一個頁面必須在list裡面,否則標籤導航不會顯示。
4. 設定網路超時時間
"networkTimeout": {
"request": 10000, //wx.request的超時時間,預設60000ms
"downloadFile": 10000 //wx.downloadFile的超時時間
"uploadFile": 10000
"connectSocket":10000
},
5. 配置debug模式
"debug": true,
注意: 開啟debug模式時,除錯資訊會更加詳細,方便除錯。如果小程式正常執行時,則需要將debug模式關閉。
二、App()函式使用
App() 函式用來註冊一個小程式,被放在一個app.js全域性檔案中。接受一個 Object 引數,其指定小程式的生命週期回撥、全域性函式、全域性資料等。
App({
onLaunch: function () {
// 展示本地儲存能力
var logs = wx.getStorageSync('logs') || []
logs.unshift(Date.now())
wx.setStorageSync('logs', logs)
// 登入
wx.login({
success: res => {
// 傳送 res.code 到後臺換取 openId, sessionKey, unionId
}
})
// 獲取使用者資訊
wx.getSetting({
success: res => {
if (res.authSetting['scope.userInfo']) {
// 已經授權,可以直接呼叫 getUserInfo 獲取頭像暱稱,不會彈框
wx.getUserInfo({
success: res => {
// 可以將 res 傳送給後臺解碼出 unionId
this.globalData.userInfo = res.userInfo
// 由於 getUserInfo 是網路請求,可能會在 Page.onLoad 之後才返回
// 所以此處加入 callback 以防止這種情況
if (this.userInfoReadyCallback) {
this.userInfoReadyCallback(res)
}
}
})
}
}
})
},
globalData: {
userInfo: null
}
})
注意:
- App()函式必須在app.js中註冊,且不能註冊多個。
- 不要在定義App()函式中呼叫getApp(),使用this就可以拿到App例項。
- 不要在onLaunch的時候呼叫getCurrentPages(),此時pages還沒有生成。
- 通過getApp()獲得例項後,不要私自呼叫生命週期函式。
三、Page()函式使用
Page(Object) 函式用來註冊一個頁面。接受一個 Object 型別引數,其指定頁面的初始資料、生命週期回撥、事件處理函式等。
Page({
/**
* 頁面的初始資料
*/
data: {
},
/**
* 生命週期函式--監聽頁面載入
*/
onLoad: function (options) {
},
/**
* 生命週期函式--監聽頁面初次渲染完成
*/
onReady: function () {
},
/**
* 生命週期函式--監聽頁面顯示
*/
onShow: function () {
},
/**
* 生命週期函式--監聽頁面隱藏
*/
onHide: function () {
},
/**
* 生命週期函式--監聽頁面解除安裝
*/
onUnload: function () {
},
/**
* 頁面相關事件處理函式--監聽使用者下拉動作
* wx.stopPullDownRefresh可以停止當前頁面的下拉重新整理
*/
onPullDownRefresh: function () {
},
/**
* 頁面上拉觸底事件的處理函式
*/
onReachBottom: function () {
},
/**
* 使用者點選右上角分享
*
*/
onShareAppMessage: function () {
}
})
四、資料繫結
data物件可以初始化頁面要用到的函式,data會以JSON的形式由邏輯層傳至渲染層,所以其物件必須是可以轉成JSON的格式:字串、陣列、布林值、物件和陣列。
Page({
data: {
name:"jenny"
})
<view>{{name}}</view>
1. 元件屬性繫結
Page({
data: {
id:1
})
<view id="item-{{id}}">hhh</view>
2. 控制屬性繫結
Page({
data: {
condition:true
})
<view wx:if="{{condition}}">hhh</view>
3. 關鍵詞繫結
<checkbox checked="{{false}}">hhh</checkbox>
注意: 不要直接寫checked=“false”
五、wx:if條件判斷
1. 判斷單個元件
<view wx:if="{{lenth>50}}">hhh</view>
<view wx:elif="{{lenth>20}}">heiheihei</view>
<view wx:else>xixixi</view>
2. 判斷多個元件
<block wx:if="{{true}}">
<view>姓名</view>
<view>學號</view>
</block>
六、wx:for列表渲染
1. 判斷單個元件
wx:for繫結一個數組。陣列的當前項下標變數名預設為index,當前項的變數名預設為item。
<view wx:for="{{students}}">
{{index}}:{{item.name}}
</view>
Page({
data:{
students:[{
name='Jenny'
},{
name='Peter'
}]
}
})
可以更改變數名。
<view wx:for="{{students}}" wx:for-index="idx" wx:for-item="student">
{{idx}}:{{student.name}}
</view>
2. 判斷多個元件
<block wx:for="{{[100,200,300]}}">
<view>{{index}}:</view>
<view>{{item.name}}</view>
</block>
七、定義和使用模板
模板是為了解決頁面裡的程式碼重複的問題,提供了模板機制,把一些可以重複使用的程式碼放置在模板裡進行定義,定義後就可以在介面裡使用。
1. 定義模板
模板是通過name屬性來標識的。下面定義了一個以student為名的模板。
<template name="student">
<text>{{name}}</text>
</template>
2. 使用模板
import引用可以將有模板功能的頁面檔案引入到要使用的模板的頁面裡。通過is屬性來查詢head這個模板並使用,data屬性傳入需要傳入的值。
<import src="template.wxml"/>
<template is="student" data="{{student}}">
<block wx:for="{{[1,2,3,4]}}">
<template is="{{item%2==0? student,color}}"/>
</block>
八、include引用檔案
include的引用功能是引用除template模板程式碼之外的全部程式碼,相當於把引用檔案的程式碼複製過來
<include src="navigator.wxml"/>
<view>這裡是正文</view>
<include src="footer.wxml"/>