前言
微信小程序暫時處于內(nèi)測期間摹蘑,公司大的版本剛好上線了筹燕,閑來無事,看看微信小程序的文檔,順便學(xué)習(xí)學(xué)習(xí)撒踪,在此希望和大家一起共勉过咬,發(fā)現(xiàn)自己越來越懶惰了,越活越?jīng)]上進(jìn)心了制妄,有點(diǎn)危險掸绞,給自己敲下警鐘吧。廢話不多說忍捡,開始記錄下這些天學(xué)習(xí)到的一些知識集漾,希望對正在閱讀的你有所幫助!
本文為iOS開發(fā)者Bison自學(xué)微信小程序所寫砸脊,所以很多東西都和iOS進(jìn)行了一下對比具篇。
開搞
創(chuàng)建項目在此濾過,相信大家看著官方文檔就可以搞定
首先我們先把整個app的架構(gòu)搭起來
一般市面上的app都已tabbar展示的方式為主凌埂,今天我就仿原生的IT Blog下面讓我們看下IT blog長什么樣吧驱显!
首先是tabbar
下面我將簡單的介紹一下微信小程序一些不可缺的目錄結(jié)構(gòu)。
- 下面借用官方的解釋
WXSS(WeiXin Style Sheets)是一套樣式語言瞳抓,用于描述 WXML 的組件樣式埃疫。
WXSS 用來決定 WXML 的組件應(yīng)該怎么顯示。為了適應(yīng)廣大的前端開發(fā)者孩哑,我們的 WXSS 具有 CSS 大部分特性栓霜。 同時為了更適合開發(fā)微信小程序,我們對 CSS 進(jìn)行了擴(kuò)充以及修改横蜒。
app.json 文件來對微信小程序進(jìn)行全局配置胳蛮,決定頁面文件的路徑、窗口表現(xiàn)丛晌、設(shè)置網(wǎng)絡(luò)超時時間仅炊、設(shè)置多 tab 等。
文件來對微信小程序進(jìn)行全局配置澎蛛,決定頁面文件的路徑抚垄、窗口表現(xiàn)、設(shè)置網(wǎng)絡(luò)超時時間谋逻、設(shè)置多 tab 等呆馁。相當(dāng)于iOS開發(fā)中的AppDelegate
app.js 是小程序邏輯部分
根據(jù)上面的目錄結(jié)構(gòu)的解釋不難看出,我們的tabbar是寫在哪的毁兆,沒錯就是app.json智哀,下面讓我們看下代碼
{
"pages":[
"pages/index/index",
"pages/logs/logs"
],
"window":{
"backgroundTextStyle":"light",
"navigationBarBackgroundColor": "#fff",
"navigationBarTitleText": "WeChat",
"navigationBarTextStyle":"black"
},
"tabBar": {
"backgroundColor":"#000000",
"list": [{
"iconPath":"image/icon_API.png",
"selectedIconPath":"image/icon_API_HL.png",
"pagePath": "pages/index/index",
"text": "首頁"
}, {
"iconPath":"image/icon_component.png",
"selectedIconPath":"image/icon_component_HL.png",
"pagePath": "pages/about/about",
"text": "我的"
}]
}
}
上圖框出來的地方就是我們的tabbar,tabbar里面可以傳一個數(shù)組list荧恍,想顯示多少個tab就到這里加就行瓷叫,當(dāng)然個數(shù)是有限制的最多5個屯吊,一個的話就沒必要了。這點(diǎn)和iOS開發(fā)里面頗為相似摹菠。
下面我們按下com + s 再 編譯一下盒卸,就可以看到如下結(jié)果了
iconPath為默認(rèn)圖片路徑,selectedIconPath為點(diǎn)擊時的圖片路徑次氨,text的話我想不說大家也已經(jīng)猜到了蔽介,對,沒錯就是圖片下面顯示的title了煮寡。
我們這暫時只寫了倆個Tab虹蓄,在此主要也就是實(shí)現(xiàn)我們的首頁效果。
由我們的效果圖可以看出幸撕,iOS開發(fā)中我們的布局主要用的是tabview薇组,而在微信小程序中類似tabviewCell的布局又是怎么寫的呢?下面我們先寫貼下代碼再做下解說坐儿。
<!--文章列表模板 begin-->
<template name="itmes">
<view class="imgs"><image src="{{imgURL}}" class="in-img" background-size="cover" model="scaleToFill"></image></view>
<view class="infos">
<view class="title">{{title}}</view>
<view class="date">{{time}}</view>
<view class="classification">{{classification}}</view>
</view>
</template>
<!--文章列表模板 begin-->
在這段代碼中<template name="items">
...</template>
是微信小程序中的模板律胀,那什么是模板呢?官方文檔是這樣解釋的貌矿。
模板
WXML提供模板(template)炭菌,可以在模板中定義代碼片段,然后在不同的地方調(diào)用逛漫。
我的理解這個相當(dāng)于iOS開發(fā)中的cell黑低,cell有了的話, 那就只缺少一個數(shù)據(jù)源了酌毡,下面我們暫時做一個本地的數(shù)據(jù)源克握。
數(shù)據(jù)主要是寫在js代碼當(dāng)中的,下面來看下代碼
//index.js
//獲取應(yīng)用實(shí)例
var app = getApp()
Page({
data: {
newList:[{url:"baidu.com",title:"sdsadsadasdas",classification:"ss",time:"2016-10-17",imgURL:"../../image/wechatHL.png"},
{url:"baidu.com",title:"sdsadsadasdassss",classification:"ss",time:"2016-10-17",imgURL:"../../image/wechatHL.png"},
{url:"baidu.com",title:"sdsadsadasdas",classification:"12",time:"2016-10-17",imgURL:"../../image/wechatHL.png"},
{url:"baidu.com",title:"sdsadsadasdas",classification:"333",time:"2016-10-17",imgURL:"../../image/wechatHL.png"},
{url:"baidu.com",title:"sdsadsadasdas",classification:"44",time:"2016-10-17",imgURL:"../../image/wechatHL.png"},
{url:"baidu.com",title:"sdsadsadasdas",classification:"44",time:"2016-10-17",imgURL:"../../image/wechatHL.png"},
{url:"baidu.com",title:"sdsadsadasdas",classification:"32",time:"2016-10-17",imgURL:"../../image/wechatHL.png"},
{url:"baidu.com",title:"sdsadsadasdas",classification:"123",time:"2016-10-17",imgURL:"../../image/wechatHL.png"},
{url:"baidu.com",title:"sdsadsadasdas",classification:"456",time:"2016-10-17",imgURL:"../../image/wechatHL.png"},
{url:"baidu.com",title:"sdsadsadasdas",classification:"454",time:"2016-10-17",imgURL:"../../image/wechatHL.png"}
]
},
//事件處理函數(shù)
bindViewTap: function() {
wx.navigateTo({
url: '../logs/logs'
})
}
})
其中的newList
為我們的數(shù)據(jù)源,數(shù)組里面包含多個字典阔馋,字典里面有我們所需要的5個字段玛荞。
cell 和數(shù)據(jù)源都有了娇掏,那就只差一個顯示了呕寝, 顯示在微信小程序當(dāng)中用的是列表渲染
列表渲染
在組件上使用wx:for控制屬性綁定一個數(shù)組,即可使用數(shù)組中各項的數(shù)據(jù)重復(fù)渲染該組件婴梧。
默認(rèn)數(shù)組的當(dāng)前項的下標(biāo)變量名默認(rèn)為index下梢,數(shù)組當(dāng)前項的變量名默認(rèn)為item
下面我們來看看這個列表渲染是怎么做的,首先切換到index.wxml中,代碼如下塞蹭。
<!--循環(huán)渲染列表 begin-->
<block wx:for="{{newList}}">
<template is="itmes" data="{{...item}}" />
</block>
<!--循環(huán)渲染列表 end-->
com + s 再 編譯一下可以看到如下的效果
到此微信小程序的列表功能已經(jīng)做完了孽江,當(dāng)然我們看到的布局都是很亂的,下一篇我們將優(yōu)化UI讓他和我們的效果圖一樣番电。