1.????微信小程序
微信小程序是一種運(yùn)行在微信客戶端,無(wú)需下載和安裝牲平,它由JavaScript+WXML+WXSS編寫通熄,類似于前端技術(shù)中的JavaScript+HTML+CSS;
page(object)是一個(gè)構(gòu)造器测垛,用該函數(shù)來(lái)注冊(cè)頁(yè)面,指定頁(yè)面的生命周期秧均,初始數(shù)據(jù)(data)食侮,事件處理回調(diào)号涯。
優(yōu)先級(jí),先找到頁(yè)面的配置page.json,如果沒(méi)有找到锯七,然后在外面配置的app.json中
全局配置
app.js? 必須用app({})方法來(lái)調(diào)用屬性链快、方法和事件,只能寫一個(gè)眉尸。
app.json 可以配置選項(xiàng)卡域蜗、頁(yè)面、設(shè)置入口頁(yè)面噪猾、設(shè)置窗口的顏色地消、字、狀態(tài)欄的顏色等等畏妖。
App() 用來(lái)注冊(cè)一個(gè)小程序脉执。在小程序啟動(dòng)的時(shí)候調(diào)用,并創(chuàng)建小程序戒劫,直到銷毀半夷,在小程序的整個(gè)生命周期過(guò)程中,他都是存在的迅细,它是單例的全局的巫橄,所以只能在app.js中注冊(cè)一次,在代碼的任何地方都可以通過(guò)getApp()獲取這個(gè)唯一的小程序?qū)嵗鸬洹pp()的參數(shù)是object類型的湘换,指定了小程序的生命周期,
globalData對(duì)象? 全局?jǐn)?shù)據(jù)對(duì)象
Page()
通過(guò)App()注冊(cè)完成的小程序之后统阿,框架就在開始注冊(cè)頁(yè)面彩倚,所以不要在App()的onLaunch()中調(diào)用getCurrentPage()方法。同樣Page()也是有生命周期的扶平,當(dāng)頁(yè)面注冊(cè)完成之后帆离,可以在page.js文件中調(diào)用getCurrentPage()方法,獲取當(dāng)前頁(yè)面對(duì)象结澄。Page()的參數(shù)也是object類型的哥谷。
data? 頁(yè)面的初始化數(shù)據(jù)
Page.prototype.setData() Page的函數(shù)setData用于頁(yè)面初始化數(shù)據(jù)data的修改,如果該數(shù)據(jù)綁定到視圖層wxml中麻献,那么無(wú)需刷新们妥,視圖層就會(huì)反映出修改,對(duì)于data的修改勉吻,只能使用setData()监婶,不能直接通過(guò)this.data進(jìn)行修改,數(shù)據(jù)量限制在1M以內(nèi)餐曼。
getCurrentPages()獲取當(dāng)前頁(yè)面棧的實(shí)例压储,以數(shù)組的形式按棧的形式給出鲜漩,第一個(gè)元素為首頁(yè)源譬,最后一個(gè)元素為當(dāng)前頁(yè)面集惋。
官方工具:? https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html
簡(jiǎn)易教程:https://developers.weixin.qq.com/miniprogram/dev/
設(shè)計(jì)指南:https://developers.weixin.qq.com/miniprogram/design/index.html
運(yùn)營(yíng)規(guī)范:https://developers.weixin.qq.com/miniprogram/product/index.html
接入指南:https://developers.weixin.qq.com/miniprogram/introduction/index.html
支付文檔:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_3&index=1
客服消息:https://mp.weixin.qq.com/debug/wxadoc/introduction/custom.html?t=20161221?
特殊業(yè)務(wù)所需資質(zhì)材料:https://mp.weixin.qq.com/debug/wxadoc/product/material.html?t=201714
數(shù)據(jù)分析:https://mp.weixin.qq.com/debug/wxadoc/analysis/index.html?t=201714
2.????微信小程序的生命周期
微信小程序的生命周期分為頁(yè)面生命周期和應(yīng)用生命周期
(1)應(yīng)用生命周期的三個(gè)屬性方法,onLaunch,onShow,onHide;
? ? ? ? onLaunch? ? 監(jiān)聽小程序的初始化踩娘,當(dāng)小程序初始化完成時(shí)刮刑,會(huì)觸發(fā)onLaunch,全局只觸發(fā)一次;
? ? ? ? onShow? ? ? 監(jiān)聽小程序的顯示养渴,當(dāng)小程序啟動(dòng)雷绢,從后臺(tái)進(jìn)入前臺(tái)時(shí),會(huì)觸發(fā)onShow理卑;
? ? ? ? onHide? ? ? ? 監(jiān)聽小程序的隱藏翘紊,當(dāng)小程序從前臺(tái)進(jìn)入后臺(tái)時(shí),會(huì)觸發(fā)onHide藐唠;
(2)頁(yè)面生命周期:
? ? ? ? onLoad:頁(yè)面加載執(zhí)行
? ? ? ? onReady:頁(yè)面渲染完成執(zhí)行
? ? ? ? onShow:頁(yè)面顯示執(zhí)行
? ? ? ? onHide:頁(yè)面隱藏執(zhí)行
? ? ? ? onUlead:頁(yè)面卸載執(zhí)行
3.????微信小程序中的事件綁定
? ? 事件分為冒泡事件和非冒泡事件
? ? 冒泡事件是當(dāng)一個(gè)組件上的事件觸發(fā)后帆疟,該事件會(huì)傳向父節(jié)點(diǎn),而非冒泡事件不會(huì)宇立。
4.????關(guān)于微信小程序的登錄以及授權(quán)
? ? ? ? 小程序先調(diào)用wx.login()獲取到用戶對(duì)應(yīng)的code(臨時(shí)登錄憑證),然后把code通過(guò)request請(qǐng)求發(fā)送給開發(fā)者服務(wù)器踪宠,然后開發(fā)者服務(wù)器用code向微信服務(wù)器換取用戶唯一的OpenID和session_key(對(duì)用戶數(shù)據(jù)進(jìn)行加密簽名的秘鑰),然后開發(fā)者服務(wù)器生成一個(gè)3rd_session(用于開發(fā)者服務(wù)器和小程序之間做登錄校驗(yàn))妈嘹,然后以3rd_session為key柳琢,session_key和OpenID為value寫入session存儲(chǔ),返回給小程序润脸,小程序把3rd_session存儲(chǔ)起來(lái)柬脸,后續(xù)用戶再次進(jìn)入小程序時(shí),會(huì)調(diào)用wx.checksession()檢驗(yàn)登錄狀態(tài)毙驯,如果失效肖粮,則重新發(fā)起登錄。
? ? ? ?部分接口需要用戶授權(quán)同意后才能調(diào)用尔苦,?wx.getSetting?獲取用戶當(dāng)前的授權(quán)狀態(tài),判斷scope.userInfo涩馆,若已經(jīng)存在,則可以直接調(diào)用getuserinfo獲取頭像昵稱允坚,不會(huì)彈框魂那。
? ? ? ? 獲取手機(jī)號(hào)不能通過(guò)api來(lái)調(diào)用,需要通過(guò)button組件觸發(fā)稠项, 需要將button組件中的open-type設(shè)置為getgetPhoneNumber涯雅,當(dāng)用戶同意后,通過(guò)bindgetphonenumber事件回調(diào)到微信服務(wù)器返回加密數(shù)據(jù)展运,然后在開發(fā)者服務(wù)器結(jié)合session_key和app_id進(jìn)行解密獲取手機(jī)號(hào)活逆。
5.? ?頁(yè)面跳轉(zhuǎn)精刷,在微信小程序中,沒(méi)有a標(biāo)簽蔗候,div標(biāo)簽怒允,需要點(diǎn)擊元素跳轉(zhuǎn)有兩種方法:
(1)在wxml頁(yè)面中使用navigator標(biāo)簽,
例如:<navigator url=? '../test/test',>锈遥,但是url中的地址必須在app.js頁(yè)面中注冊(cè)過(guò)才能使用纫事。
(2)綁定bindtap事件,然后在點(diǎn)擊的時(shí)候使用wx.navigator({ url: '../test/test',})跳轉(zhuǎn)到相應(yīng)的頁(yè)面所灸。
6.? ?var that = this 改變this的作用域,例如
? ? bindtap:function(){
? ??????var that = this ,
? ? ? ? wx.getUserInfo({
? ? ? ? this.xxx? // 指向這個(gè)函數(shù)丽惶;
? ? ? ? that.xxx? //指向外部函數(shù);
})
}
7.? ? 微信小程序的數(shù)據(jù)綁定爬立、條件渲染跟vue里的很像钾唬。
8.? ? 關(guān)于布局??
Flex布局?
Flex容器屬性
flex-dirction決定元素的排列方向
flex-wrap 決定元素如何換行
flex-flow flex-dirction和flex-wrap的簡(jiǎn)寫
justify-content 元素在主軸上的對(duì)齊方式
align-items 元素在交叉軸的對(duì)齊方式
Flex容器內(nèi)元素屬性
flex-grow 當(dāng)有多余空間時(shí),元素的放大比例
flex-shrink 當(dāng)空間不足時(shí)侠驯,元素的縮小比例
flex-basis 元素在主軸上占據(jù)的空間
flex 是grow抡秆、shrink、basis的縮寫
oorder 定義元素的排列順序
align-self 定義元素自身的對(duì)齊方式