1. 新建項目 點擊+號 進入創建場景,選擇對應的選項和自己的AppID 為了不見黃色警告熱重載,可以選擇關閉。 在project.config.json項目的配置文件的setting配置添加如下: "checkSiteMap":false 2. 配置首頁 2.1 新建項目與梳理項目結構 點擊app ...
1. 新建項目
點擊+
號
進入創建場景,選擇對應的選項和自己的AppID
為了不見黃色警告熱重載,可以選擇關閉。
在project.config.json
項目的配置文件的setting
配置添加如下:
"checkSiteMap":false
2. 配置首頁
2.1 新建項目與梳理項目結構
點擊app.json
小程式項目的全局配置文件的pages
配置中新建三個頁面的目錄,同時刪掉預設創建的index
與logs
路徑,記得保存。
"pages/home/home",
"pages/message/message",
"pages/contact/contact"
2.2 配置導航欄
在app.json文件的window全局配置中修改導航欄名稱的"navigationBarTitleText": "Weixin"
為本地生活。
"navigationBarTitleText": "本地生活"
修改導航欄的預設背景顏色#fff
為#2b4b6b
"navigationBarBackgroundColor": "#2b4b6b",
改變文本顏色"navigationBarTextStyle":"black"
由黑變白(也就這兩種顏色選擇)
"navigationBarTextStyle":"white"
效果如下:
2.3 配置\(tabBar\)
由於我嫌找阿裡圖標太麻煩了,所以我選擇直接拿別人的資料。
搜索黑馬程式員公眾號->黑馬資源->2022資料下載->點擊Web前端->找列表中的手把手快速帶你開發微信小程式->找到微信小程式基礎目錄-領取資料中的day02。
鏈接:https://pan.baidu.com/s/1-2KMJ_lSHMI8JnzqUOy49w
提取碼:p1op
把image文件夾放入到自己創建的項目主目錄中。
在app.json
文件中配置tabBar
項,修改三個頁面對應的選中與未選中的圖標,設置好各個的導航路徑,最終配置如下。
"tabBar": {
"list": [{
"pagePath": "pages/home/home",
"text": "首頁",
"iconPath": "/images/tabs/home.png",
"selectedIconPath": "/images/tabs/home-active.png"
},{
"pagePath": "pages/message/message",
"text": "消息",
"iconPath": "/images/tabs/message.png",
"selectedIconPath": "/images/tabs/message-active.png"
},{
"pagePath": "pages/contact/contact",
"text": "聯繫我",
"iconPath": "/images/tabs/contact.png",
"selectedIconPath": "/images/tabs/contact-active.png"
}
]
},
最終效果如下:
2.4 實現輪播圖
2.4.1 獲取數據
進入微信公眾平臺,登錄後點擊開發的開發管理
選擇開發設置
選擇伺服器功能變數名稱設置
在我們的request介面上添加黑馬程式員提供的介面https://applet-base-api-t.itheima.net;
現在就可以看到微信開發者工具 右上側詳情的項目配置的功能變數名稱信息了
獲取Get介面為:https://applet-base-api-t.itheima.net/slides
進入pages/home/home.js
文件,在data中定義數據數組swiperList
接著在onLoad函數下新增一個獲取輪播圖數據的方法
//獲取輪播圖數據的方法
getSwiperList(){
wx.request({
url: 'https://applet-base-api-t.itheima.net/slides',
method:'GET',
//定義一個名為res的形參,獲取伺服器返回的結果
success:(res)=>{
console.log(res);
}
})
},
而我們清楚,當頁面載入完成後才能顯示出輪播圖的結果,那麼就需要修改onLoad函數對我們定義的上述方法進行載入。
/**
* 生命周期函數--監聽頁面載入
*/
onLoad(options) {
this.getSwiperList()
},
可以看到控制台顯示的後臺信息為對象。
那麼當我們成功調用函數時,也應該考慮把相應的數據加入到之前設置的swiperList
數組中,通過在setdata
中設定key
為該數組,並對應的value
為之前控制台得到的res
對象中的data
數組數據。
所以修改onLoad函數如下:
//獲取輪播圖數據的方法
getSwiperList(){
wx.request({
url: 'https://applet-base-api-t.itheima.net/slides',
method:'GET',
//定義一個名為res的形參,獲取伺服器返回的結果
success:(res)=>{
console.log(res);
this.setData({
swiperList:res.data
})
}
})
},
接著我們在調試器下麵切換到AppData
中,可以看到之前預設swiperList
為空數組,也即沒有存放數據。
後面保存後就有對應的數據,可以看到是相應的對象,有輪播圖的圖片鏈接。
2.4.2 渲染圖層
利用微信自帶的swiper
輪播圖組件中間鑲嵌swiper-item
組件,結合wx:for
遍歷與微信mustache
語法(不就是插值表達式嘛?),另外要註意設置wx:key
對應數據的id
(這確定不是Vue?)。
之後我們要在swiper-item裡加入image組件,src為動態地址,所以還是要是使用mustache
語法,由於用了wx:for
可以獲取item項,而我們之前可以知道之前swiperList存放的數據對象就有image鍵值對,因此可以寫item.image
。
pages/home/home.wxml
<!-- 輪播圖區域 -->
<swiper>
<swiper-item wx:for="{{swiperList}}" wx:key="id">
<image src="{{item.image}}"></image>
</swiper-item>
</swiper>
效果如下:
但是有點不太好看, 所以我們可以利用wxss(相當於微信的CSS獨立樣式文件)進行調整。
通過類選擇器限定高度為350rpx
,swiper
的 子類 image
強制高寬拓屏設100%
。
swiper {
height: 350rpx;
}
swiper image {
width:100%;
height:100%;
}
然後為了讓輪播圖可以銜接的同時,可以顯示小點表示位置變化,在home.wxml
中的swiper
修改成如下內容
<!-- 輪播圖區域 -->
<swiper indicator-dots circular>
<swiper-item wx:for="{{swiperList}}" wx:key="id">
<image src="{{item.image}}"></image>
</swiper-item>
</swiper>
最終效果如下:
2.5 實現九宮格
2.5.1 獲取數據
獲取Get介面為:https://applet-base-api-t.itheima.net/categories
實現以下的步驟跟實現輪播圖的步驟一致,所以接下來只寫代碼部分。
pages/home/home.js
:
/**
* 頁面的初始數據
*/
data: {
//存放輪播圖數據的數組
swiperList:[],
//存放九宮格數據的數組
gridList:[],
},
/**
* 生命周期函數--監聽頁面載入
*/
onLoad(options) {
this.getSwiperList()
this.getGridList()
},
//獲取九宮格數據的方法
getGridList() {
wx.request({
url:'https://applet-base-api-t.itheima.net/categories',
method : 'GET',
success:(res)=>{
console.log(res);
this.setData({
gridList : res.data
})
}
})
},
2.5.2 渲染頁面
要設置九宮格,就需要在外層容器里迴圈加入子容器,子容器之間限定對應的長寬並添加我們已有的九宮格數據的圖標與文本,最後flex佈局。
pages/home/home.wxml
:
<!-- 九宮格區域 -->
<view class="grid-list">
<view class="grid-item" wx:for="{{gridList}}" wx:key="id">
<image src="{{item.icon}}"></image>
<text>{{item.name}}</text>
</view>
</view>
pages/home/home.wxss
:
.grid-list{
display:flex;
/* 一行存不下,允許換行 */
flex-wrap:wrap;
/* 在item的基礎上增加外部邊框 */
border-left: 1rpx solid #efefef;
border-top: px solid #efefef;
}
.grid-item{
width:33.33%;
height:200rpx;
/* 居中對齊,並保證組合為縱向佈局 */
display: flex;
flex-direction: column;
/* 橫向和縱向的居中 */
align-items: center;
justify-content: center;
/* 增加右側和底部邊框 */
border-right: 1rpx solid #efefef;
border-bottom: 1rpx solid #efefef;
/* 為了不讓邊框擠壓子容器圖標,
修改預設的content-box */
box-sizing: border-box;
}
.grid-item image{
/* 圖片太大了 */
width:60rpx;
height:60rpx;
}
.grid-item text{
font-size:24rpx;
/* 文本與圖片之間有距離 */
margin-top: 10rpx;
}
最終效果如下:
2.6 實現底部圖片佈局
pages/home/home.wxml
<!-- 圖片區域 -->
<view class="img-box">
<!-- widthFix在寬度不變的情況,高度自適應 -->
<image src="/images/link-01.png" mode="widthFix"></image>
<image src="/images/link-02.png" mode="widthFix"></image>
</view>
pages/home/home.wxss
:
.img-box{
display: flex;
/* 圖片上下、左右有間距 */
padding:20rpx 10rpx;
/* 平分占滿的img-box所留剩下右側的空白區域 */
justify-content: space-around;
}
.img-box image{
width:45%;
}
最終效果如下:
3. 模板與配置的總結
3.1 總結圖
3.2 註意事項
wx:if
與hidden
的區別就像v-if
與v-show
一樣,前者是動態刪除鏈接,後者只是樣式的隱藏,如果要節省資源和經常使用可以用hidden
rpx
在使用iphone6的模擬時進行換算更加方便,因為rpx就是把手機屏幕劃分成750等份,即750rpx=375px
->2rpx=1px