寫在前面
開發者工具
常用標籤
view: 小程式提供view供開發者使用,類似於Html中的div
block: 並不是一個元件,它僅僅是一個包裝元素,不會在頁面中做任何渲染,只接受控制屬性。
text: 行內元素標籤,類似於 span
專案結構
pages --- 頁面存放
|
app.js ---全域性的JS 可設定變數供全域性使用, 一進入小程式會觸發onLaunch生命週期
|
app.json ---pages:[存放頁面路由],window:頂部導航的顏色、文字,tabBar:底部導航欄設定,navigateToMiniProgramAppIdList:[要跳轉的小程式的appID]
|
app.wxss ---全域性樣式複製程式碼
編碼
建立頁面 在app.json中的pages陣列 新增 home(自定義)
"pages":["pages/home/home"]
複製程式碼
多個頁面以逗號隔開
"pages":["pages/home/home","pages/login/login"]
複製程式碼
wxml 編寫html
<view class='hello'>hello 微信小程式</view> 複製程式碼
wxss編寫css
.hello{color: lime;}複製程式碼
{"navigationBarTitleText": "選擇班級"}複製程式碼
生命週期及方法
Page(
{ data: { text: "This is page data." },
onLoad: function(options) { // Do some initialize when page load. },
onReady: function() { // Do something when page ready. },
onShow: function() { // Do something when page show. },
onHide: function() { // Do something when page hide. },
onUnload: function() { // Do something when page close. },
onPullDownRefresh: function() { // Do something when pull down }, // Event handler.
viewTap: function() { this.setData({ text: 'Set some data for updating view.' }) }
複製程式碼
在頁面中使用
<view class='hello' bindtap="viewTap" >hello {{text}}</view> 複製程式碼
邏輯表示式(以下內容來自W3C)
wx:for複製程式碼
//在元件上使用 wx:for 控制屬性繫結一個陣列,即可使用陣列中各項的資料重複渲染該元件。//預設陣列的當前項的下標變數名預設為 index,陣列當前項的變數名預設為 item。//如不提供 wx:key,會報一個 warning, 如果明確知道該列表是靜態,或者不必關注其順序,可以選擇忽略。
Page({
data: {
array: [{
message: 'foo',
}, {
message: 'bar'
}]
}
})
<view wx:for="{{array}}">
{{index}}: {{item.message}}
</view>
//使用 wx:for-item 可以指定陣列當前元素的變數名,使用 wx:for-index 可以指定陣列當前下標的變數名:
<view wx:for="{{array}}" wx:for-index="idx" wx:for-item="itemName">
{{idx}}: {{itemName.message}}
</view>複製程式碼
wx:if複製程式碼
//在框架中,我們用wx:if="{{condition}}"來判斷是否需要渲染該程式碼塊:
Page({
data: {
condition:true
}
})
<view wx:if="{{condition}}"> True </view>
//也可以用wx:elif和wx:else來新增一個else塊:
<view wx:if="{{length > 5}}"> 1 </view>
<view wx:elif="{{length > 2}}"> 2 </view>
<view wx:else> 3 </view>//因為wx:if之中的模板也可能包含資料繫結,所以當wx:if的條件值切換時,框架有一個區域性渲染的過程,因為它會確保條件塊在切換時銷燬或重新渲染。//同時wx:if也是惰性的,如果在初始渲染條件為false,框架什麼也不做,在條件第一次變成真的時候才開始區域性渲染。//相比之下,hidden就簡單的多,元件始終會被渲染,只是簡單的控制顯示與隱藏。//一般來說,wx:if有更高的切換消耗而hidden有更高的初始渲染消耗。因此,如果需要頻繁切換的情景下,用hidden更好,如果在執行時條件不大可能改變則wx:if較好。複製程式碼
事件
事件分為冒泡事件和非冒泡事件冒泡事件:當一個元件上的事件被觸發後,該事件會向父節點傳遞。非冒泡事件:當一個元件上的事件被觸發後,該事件不會向父節點傳遞。複製程式碼
型別 | 觸發條件 |
---|---|
touchstart | 手指觸控動作開始 |
touchmove | 手指觸控後移動 |
touchcancel | 手指觸控動作被打斷,如來電提醒,彈窗 |
touchend | 手指觸控動作結束 |
tap | 手指觸控後馬上離開 |
longtap | 手指觸控後,超過350ms再離開 |
//使用
<view id="outter" bindtap="handleTap1">
outer view
<view id="middle" catchtap="handleTap2">
middle view
<view id="inner" bindtap="handleTap3">
inner view
</view>
</view>
</view>複製程式碼
Demo練習
此時的你已經掌握了構建頁面的能力 那麼我們來寫一個demo吧
場景 Tab切換框 點選其中一項 當前項背景顏色改變
第一步編寫wxml
<view class="info-choose">
<view bindtap="chooselog"
wx:for="{{array}}"
wx:key="{{index}}"
data-select="{{item.id}}"
class="{{item.id==choice?"check":""}}">
{{item.name}}
</view>
</view> 複製程式碼
第二步編寫js
Page({
data: {
array:[
{ "name": "Jaket",
"id":1
},
{
"name": "夾克",
"id": 2
},
{
"name": "夾克哥哥",
"id": 3
},
{
"name": "夾克特",
"id": 4
},
],
choice:0,//判斷是否選中
},
chooselog:function(data){
var that=this;
that.setData({//把選中值放入判斷值
choice : data.currentTarget.dataset.id
})
}
})複製程式碼
第三步編寫wxss
.info-choose view{
width:130rpx;
height:130rpx;
border:1rpx solid #ccc;
}
.info-choose.check{
background:lime;
}複製程式碼
下期預告
1、template模板的使用
2、微信API的使用
3、微信元件 tabBar的使用
4.Demo checkbox複選