微信小程序開發(fā)

一、創(chuàng)建項目

1、首先創(chuàng)建項目需要準備的工作

微信公眾平臺注冊開發(fā)者賬號:https://mp.weixin.qq.com/

下載小程序開發(fā)工具:

https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html

注意:(填寫注冊郵箱信息,注意一個郵箱只能注冊一次,該郵箱不能注冊其他騰訊平臺)

2、認識項目目錄

全局配置文件app.json (對于一個小程序項目而言,最重要的文件是app.json,它也是開發(fā)工具識別一個文件夾是否為小程序項目的標識。如果文件夾中沒有app.json文件,則提示無法創(chuàng)建項目。)

pages目錄:用于存放所有的頁面。

utils目錄:用于存放工具類文件。

app.js:是入口文件,程序在運行時,首先要執(zhí)行該文件。

app.json:是全局配置文件,用于配置小程序的信息(它里面配置的是全局信息)。

app.wxss:是全局樣式文件。全局樣式文件里面定義的選擇器,在所有的頁面中生效。

project.config.json:是項目配置文件。

sitemap.json:是SEO配置文件,方便用戶搜索到該小程序。

總結:

頁面的.json、.js、.wxss文件必須與.wxml文件同名,否則不生效

每個頁面都必須在pages下注冊,沒有注冊的頁面,如果不訪問,編譯能通過,一旦試圖訪問該頁面則會報錯

可以通過在pages下添加一個選項快速新建一個頁面,開發(fā)工具會自動生成對應的文件


3、頁面組成

每一個頁面由四個文件組成:xxx.wxml文件、xxx.wxss文件、 xxx.js文件和xxx.json文件。?

(1)xxx.wxml文件

xxx.wxml文件,就相當于一個html文件。在wxml文件中,不能寫傳統(tǒng)的html標簽,只能寫微信提供的組件。

① view組件

相當于div標簽。

② text組件

相當于span標簽。

③ swiper

swiper是滑塊視圖容器,它里面只能放swiper-item組件。

swiper組件的常用屬性:

circular是銜接滑動

autoplay是自動切換

interval是自動切換時間間隔

indicator-dots是否顯示面板指示點

indicator-color指示點顏色

indicator-active-color當前選中的指示點顏色

如圖一:

圖1

④ image

image是圖片組件,最好全部采用網絡圖片,因為小程序的總體積不允許超過2MB。

(2)xxx.wxss文件

xxx.wxss文件,就相當于一個css文件。在wxss文件中,最好不要寫標簽選擇器和id選擇器,統(tǒng)一寫類選擇器。

為了讓小程序里面的內容在各種設備上能夠自適應顯示,微信推出了響應式單位:rpx。在iphone6中,2rpx=1px。

width:?60rpx;?????/*?相當于width:?30px;?*/


(3)xxx.js文件

xxx.js文件,是交互文件(核心文件)。

Page()函數,返回頁面對象,該函數需要傳一個配置參數,這個配置參數是一個對象。在這個配置對象中,定義當前頁面的所有內容。

① data

定義頁面的數據。

Page({

? ? ?data:?{

? ? ? ? ?name:?"熱門歌曲",

?????????songs:?[{id:?1001},?{id:?1002}]

??}

})


② 自定義函數

開發(fā)者可以添加任意的函數或數據到Object 參數中,在頁面的函數中用this可以訪問。

Page({

????//?定義函數

????delSong()?{

????????this.data.songs.splice(0,?1)

????????this.setData({

????????????songs:?this.data.songs

????????})

????}

})

(4)xxx.json文件

xxx.json文件,是頁面的配置文件(它里面配置的是當前頁面信息)。

5、插值表達式 {{}}

WXML 中的動態(tài)數據均來自對應 Page 的 data。

(1)獲取data中數據

通過插值表達式{{}},可以顯示js里面定義的data里面的數據。

<text>歌曲分類:{{name}}</text>

(2)組件屬性(需要在雙引號之內)

??<view?id="item-{{id}}">?</view>

(3)運算

可以在{{}} 內進行簡單的運算。

① 三元運算

<view?class="item?{{index%2===0???'bg'?:?''}}">?</view>

② 邏輯判斷

??<view?wx:if="{{length?>?5}}">?</view>

6、bindtap

bindtap是觸屏事件,其實就是相當于網頁中的點擊事件。

<view?class="btn"?bindtap="delSong">刪除</view>

7、data-xxx 自定義屬性

小程序中bindtap綁定方法時不能傳參數。所以組件通過data-xxx傳遞數據。

<view?class="btn"?data-index="{{index}}"?bindtap="del1">刪除</view>


注意:自定義屬性的命名用駝峰或者大寫命名,小程序內部會自動轉成小寫。

del(e){

????//解構出自定義的index屬性

????let?{currentTarget:{dataset:{index}}}?=?e

?}

8、setData()方法

setData()方法,更新頁面中數據。頁面數據更新后,調用setData()方法重新渲染到頁面。


???this.setData({

??????????typeId:typeid,

??????????name:typename

????})

二、列表渲染

1、wx:for

wx:for指令用于循環(huán)數組數據,生成組件。

循環(huán)出來的每一項通過item返回,每一項對應的索引,通過index返回。

2、wx:key

wx:key="",設置每一項唯一的標識。循環(huán)列表時,添加wx:key的好處是,將來列表發(fā)生變化時重新渲染列表的損耗為更低。

如下圖2

圖2

三、條件渲染

條件渲染可以使用wx:if或hidden。

一般來說,wx:if 有更高的切換消耗而 hidden 有更高的初始渲染消耗。因此,如果需要頻繁切換的情景下,用 hidden 更好,如果在運行時條件不大可能改變則 wx:if 較好。

1、wx:if

wx:if用于條件渲染:條件為真生成里面的內容,條件為假不會生成里面的內容。(每次重新生成內容)

也可以用wx:elif 和 wx:else 來添加一個 else 塊。

<view?wx:if="{{typeID?==?1}}">?1?</view>

??<view?wx:elif="{{typeID?==?2}}">?2?</view>

??<view?wx:else>?3?</view>

2、hidden

hidden用于條件渲染:條件為真隱藏里面的內容,條件為假顯示里面的內容。(每次切換樣式)

??<view?hidden="{{typeID!=?2}}">?1?</view>

四、tabBar&頁面跳轉

這個配置項是用來配置頁面底部的tab欄的,開發(fā)者可以根據自己的需求來進行配置.

注意:tabBar是一個數組,只能配置最少2個,最多5個,而且tab欄的順序是按照數組的排序來的.

tabBar官方給出了五個屬性(color(HexColor), selectedColor(HexColor), backgroundColor(HexColor), borderStyle(String), list(Array)?).

接下來說說我對這五個屬性的理解:

# color設置tab上的文字默認顏色(黑色)

# selectedColor設置tab上的文字選中的顏色(#369深藍色)

# backgroundColor設置tab的背景顏色(white)

# borderStyle設置邊框的顏色,現在僅支持(black和white)

上面這四個屬性就是按照官方給出的API來設置就可以,下面說一下list屬性.list屬性接受的是一個數組(Array),在list下面配置的每一項都是一個對象,他們都有以下這四個屬性(pagePath(String), text(String), iconPath( String), selectedIconPath(String)).?

* pagePath?這個定義的是頁面的路徑,但是這個屬性定義的路徑必須是在pages上定義過的.?

* text?設置的是按鈕上的文字?

* iconPath?是定義icon圖片的路徑,這個屬性定義的圖片大小不超過40kb?

* selectedIconPath?定義的是當選中按鈕之后顯示的圖片,同樣圖片的大小不能超過40kb.


比如:這是底部導航欄效果圖

底部導航欄

解析:藍色小屋就是選中的圖片(selectedIconPath

? ? ? ? ? ? 灰色購物車就是圖片(iconPath?

????????????首頁藍色的就是選中的顏色(selectedColor

? ? ? ? ? ? 列表黑色的就是color

五、確認框和消息框

1、wx.showModal() 確認框

????title:提示的標題

????content:提示的內容

????success:接口調用成功的回調函數。回調函數中的confirm屬性返回true,表示點擊的是確定 按鈕,否則是取消按鈕。

wx.showModal({

??????content:'是否確定刪除',

??????success:({confirm})=>{

????????//confirm返回true,表示點擊的是確定按鈕,否則是取消按鈕

????????if(confirm){

}}

?})?



2、wx.showToast() 顯示消息提示框

title:提示的內容

icon:圖標

duration:消息提示框的顯示時間

mask:是否顯示透明蒙層,防止觸摸穿透

wx.showToast({? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?title:?'刪除成功',????????icon:"success",????????duration:1500,????????mask:true???})


六,封裝方法

模塊化語法有兩種:① commonjs規(guī)范,② es6規(guī)范。

nodejs環(huán)境采用的就是commonjs規(guī)范。采用exports 或 module.exports 導出成員,采用require() 導入成員。

微信小程序支持commonjs規(guī)范,同時還支持官方的ES6規(guī)范。ES6規(guī)范采用export 導出成員,采用import 導入成員。

1,封裝方法并導出

將封裝的方法放到util目錄下的js文件中??梢孕陆╦s文件,也可以寫在直接util.js文件中。

(1)確認框方法

//?定義確認框方法,并導出

export?let?$confirm?=?(content)=>{

??return?new?Promise((resolve)=>{

????wx.showModal({

??????content,

??????success:({confirm})=>{

????????if(confirm){

??????????resolve()

????????}

??????}

????})

??})

}


(2)消息框方法

//?定義消息框方法,并導出

export?let?$msg?=?(title,icon='success',duration=1500)=>{

??wx.showToast({

????title,

????icon,

????duration,

????mask:true

??})

}


(3)獲取事件參數的方法

export?let?$key?=?(e)=>{

??return?e.currentTarget.dataset

}



2,導入方法

import是ES6的導入語句。


//?導入msg模塊中的指定成員

import?{$msg,$confirm}?from?'../../utils/msg'



3.將方法注冊給全局對象wx

wx對象是微信小程序的全局對象,在任何地方都可以使用

(1)注冊語句

wx.$msg?=?$msg

wx.$confirm?=?$confirm

(2)在app.js入口文件中導入

注意:注冊給wx對象的方法,需要在app.js文件中導入,才可使用。

//?導入初始化文件

import?'./utils/index'

(3)調用方法

wx.方法名(參數)

wx.$msg('刪除成功')

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容