微信小程序知識(shí)總結(jié)及案例集錦

微信小程序知識(shí)總結(jié)及案例集錦

微信小程序的發(fā)展會(huì)和微信公眾號(hào)一樣循头,在某個(gè)時(shí)間點(diǎn)爆發(fā)

學(xué)習(xí)路徑

  1. 微信小程序最好的教程肯定是官方的文檔啦忿等,點(diǎn)擊這里直達(dá) 微信官方文檔

  2. 認(rèn)真跟著文檔看一遍誊役,相信有vue前端經(jīng)驗(yàn)的看下應(yīng)該就能上手了因块,然后安裝 微信小程序開(kāi)發(fā)者工具

  3. 新建一個(gè)quick start項(xiàng)目革娄,了解代碼結(jié)構(gòu)捅膘,這里附上整個(gè)quick start代碼翘地。

  4. 然后就拿個(gè)順手的api練練手申尤,這里附上cnode代碼,跟著做完差不多就算入門了衙耕。

  5. 入門之后就是看其他項(xiàng)目的實(shí)現(xiàn)了昧穿,這里會(huì)附上案例集錦,一些github的案例橙喘。

知識(shí)總結(jié)

tip:看到了另一份W3CSchool整理的文檔时鸵,可以結(jié)合官方文檔一起看

目錄結(jié)構(gòu)介紹

  • app.js — 對(duì)本頁(yè)面的窗口表現(xiàn)進(jìn)行配置。
  • app.json — 對(duì)微信小程序進(jìn)行全局配置,決定頁(yè)面文件的路徑饰潜、窗口表現(xiàn)初坠、設(shè)置網(wǎng)絡(luò)超時(shí)時(shí)間、設(shè)置多 tab 等彭雾。
  • app.wxss — 接受一個(gè)數(shù)組,每一項(xiàng)都是字符串,來(lái)指定小程序由哪些頁(yè)面組成丧失。

頁(yè)面生命周期

  1. 小程序注冊(cè)完成后母截,加載頁(yè)面,觸發(fā)onLoad方法吴菠。
  2. 頁(yè)面載入后觸發(fā)onShow方法者填,顯示頁(yè)面。
  3. 首次顯示頁(yè)面做葵,會(huì)觸發(fā)onReady方法占哟,渲染頁(yè)面元素和樣式,一個(gè)頁(yè)面只會(huì)調(diào)用一次蜂挪。
  4. 當(dāng)小程序后臺(tái)運(yùn)行或跳轉(zhuǎn)到其他頁(yè)面時(shí)重挑,觸發(fā)onHide方法。
  5. 當(dāng)小程序有后臺(tái)進(jìn)入到前臺(tái)運(yùn)行或重新進(jìn)入頁(yè)面時(shí)棠涮,觸發(fā)onShow方法谬哀。
  6. 當(dāng)使用重定向方法wx.redirectTo(OBJECT)或關(guān)閉當(dāng)前頁(yè)返回上一頁(yè)wx.navigateBack(),觸發(fā)onUnload

常規(guī)頁(yè)面A:onLoad()-->onShow()-->onReady()-->onHide()-->onUnload()
釋義:

  • onLoad():監(jiān)聽(tīng)頁(yè)面加載严肪,一個(gè)頁(yè)面只會(huì)調(diào)用一次
  • onShow():監(jiān)聽(tīng)頁(yè)面顯示史煎,每次打開(kāi)頁(yè)面都會(huì)調(diào)用一次
  • onReady():監(jiān)聽(tīng)頁(yè)面初次渲染完成,一個(gè)頁(yè)面只會(huì)調(diào)用一次驳糯,代表頁(yè)面加載完畢篇梭,視圖層和邏輯層可進(jìn)行交互
  • onHide():監(jiān)聽(tīng)頁(yè)面隱藏,當(dāng)頁(yè)面被覆蓋或進(jìn)入后臺(tái)執(zhí)行
  • onUnload():監(jiān)聽(tīng)頁(yè)面卸載酝枢,當(dāng)頁(yè)面被關(guān)閉或內(nèi)存不足主動(dòng)銷毀頁(yè)面

wx.navigateTo跳轉(zhuǎn)狀態(tài)下恬偷,頁(yè)面A和頁(yè)面B的生命周期邏輯

  1. 進(jìn)入A頁(yè)面:A執(zhí)行onLoad()-->onShow()-->onReady();
  2. A頁(yè)面navigateTo B頁(yè)面:A執(zhí)行onHide()帘睦,B執(zhí)行onLoad()-->onShow()-->onReady()袍患;
  3. B頁(yè)面返回A頁(yè)面:B執(zhí)行onUnload(),A執(zhí)行onReady()竣付;
  4. 退出A頁(yè)面:A執(zhí)行onUnload()诡延。
Page({
  data:{},
  onLoad:function(options){
    // 頁(yè)面初始化 options為頁(yè)面跳轉(zhuǎn)所帶來(lái)的參數(shù)
  },
  onReady:function(){
    // 頁(yè)面渲染完成
  },
  onShow:function(){
    // 頁(yè)面顯示
  },
  onHide:function(){
    // 頁(yè)面隱藏
  },
  onUnload:function(){
    // 頁(yè)面關(guān)閉
  }
})
Page 實(shí)例的生命周期
Page 實(shí)例的生命周期

組件

  • 基本:view,text
  • 表單:button,input,radio,slider
  • 媒體:image,video,audio,canvas
  • 模態(tài):action-sheet,modal,toast,loading
  • 容器:swiper,scroller
  • 導(dǎo)航:navigator,tabbar

小程序開(kāi)發(fā)踩坑記錄

  1. 小程序頁(yè)面空白

    • css兼容性問(wèn)webkit內(nèi)核
    • lineShopId長(zhǎng)度太長(zhǎng),字符轉(zhuǎn)數(shù)字Number
    • post請(qǐng)求參數(shù)加上encodeURIComponent解析字符串
  2. header要設(shè)置正確

    • get "content-type":'application/json'
    • post "content-type":'application/x-www-form-urlencoded'
    • content-Type:application/x-www-form-urlencoded,application/json
  3. bind事件綁定不會(huì)阻止冒泡事件向上冒泡古胆,catch事件綁定可以阻止冒泡事件向上冒泡

  4. image背景圖片地址必須是url或者base64/本地資源無(wú)法通過(guò) css 獲取 可以使用網(wǎng)絡(luò)圖片肆良,或者 base64,或者使用 <image/> 標(biāo)簽

  5. 使用豎向滾動(dòng)時(shí),需要給scroll-view一個(gè)固定高度惹恃,通過(guò) WXSS 設(shè)置 height夭谤。如果scroll-view高度設(shè)置為100%,則不能觸發(fā)上拉刷新和下拉加載事件......

  6. App() 小程序注冊(cè)入口,全局唯一座舍。App()用來(lái)注冊(cè)一個(gè)小程序沮翔,全局只有一個(gè),全局的數(shù)據(jù)也可以放到這里面來(lái)操作曲秉。

    // 注冊(cè)微信小程序采蚀,全局只有一個(gè)
    let appConfig = {
        // 小程序生命周期的各個(gè)階段
        onLaunch: function(){},
        onShow: function(){},
        onHide: function(){},
        onError: function(){},
    
        // 自定義函數(shù)或者屬性
        ...
    };
    App(appConfig);
    
    // 在別的地方可以獲取這個(gè)全局唯一的小程序?qū)嵗?const app = getApp();
    

    小程序并沒(méi)有提供銷毀的方式,所以只有當(dāng)小程序進(jìn)入后臺(tái)一定時(shí)間承二、或者系統(tǒng)資源占用過(guò)高的時(shí)候榆鼠,才會(huì)被真正的銷毀。

  7. Page() 頁(yè)面注冊(cè)入口亥鸠。Page()用來(lái)注冊(cè)一個(gè)頁(yè)面妆够,維護(hù)該頁(yè)面的生命周期以及數(shù)據(jù)。

    // 注冊(cè)微信小程序负蚊,全局只有一個(gè)
    let pageConfig = {
        data: {},
        // 頁(yè)面生命周期的各個(gè)階段
        onLoad: function(){},
        onShow: function(){},
        onReady: function(){},
        onHide: function(){},
        onUnload: function(){},
        onPullDownRefresh: function(){},
        onReachBottom: function(){},
        onShareAppMessage: function(){},
    
        // 自定義函數(shù)或者屬性
        ...
    };
    Page(pageConfig);
    
    // 獲取頁(yè)面堆棧神妹,表示歷史訪問(wèn)過(guò)的頁(yè)面,最后一個(gè)元素為當(dāng)前頁(yè)面
    const page = getCurrentPages();
    
  8. {{}} 不能執(zhí)行方法家妆,只能處理簡(jiǎn)單的運(yùn)算如 “+ - * /”鸵荠,比如遇到遍歷list,每個(gè)item的金額需要格式化伤极,只能在js里預(yù)先格式化好再setData一遍( ╯□╰ )

  9. 數(shù)字鍵盤用 type="digit"

  10. 禁止頁(yè)面下拉需要設(shè)置 "disableScroll": true

案例集錦

tip:從案例里可以看到很多其他小程序?qū)崿F(xiàn)的方式蛹找,多多看代碼

更多

持續(xù)踩坑中...

后續(xù)會(huì)進(jìn)行不斷更新届慈,訂閱請(qǐng)點(diǎn)watch,收藏請(qǐng)點(diǎn)star忿偷,歡迎開(kāi)issues來(lái)提問(wèn)

原文鏈接:https://github.com/junhey/wxapp

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拧篮,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子牵舱,更是在濱河造成了極大的恐慌,老刑警劉巖缺虐,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芜壁,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)慧妄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門顷牌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人塞淹,你說(shuō)我怎么就攤上這事窟蓝。” “怎么了饱普?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵运挫,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我套耕,道長(zhǎng)谁帕,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任冯袍,我火速辦了婚禮匈挖,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘康愤。我一直安慰自己儡循,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布征冷。 她就那樣靜靜地躺著择膝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪资盅。 梳的紋絲不亂的頭發(fā)上调榄,一...
    開(kāi)封第一講書(shū)人閱讀 51,370評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音呵扛,去河邊找鬼每庆。 笑死,一個(gè)胖子當(dāng)著我的面吹牛今穿,可吹牛的內(nèi)容都是我干的缤灵。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼蓝晒,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼腮出!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起芝薇,我...
    開(kāi)封第一講書(shū)人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤胚嘲,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后洛二,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體馋劈,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡攻锰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了妓雾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片娶吞。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖械姻,靈堂內(nèi)的尸體忽然破棺而出妒蛇,到底是詐尸還是另有隱情,我是刑警寧澤楷拳,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布绣夺,位于F島的核電站,受9級(jí)特大地震影響唯竹,放射性物質(zhì)發(fā)生泄漏乐导。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一浸颓、第九天 我趴在偏房一處隱蔽的房頂上張望物臂。 院中可真熱鬧,春花似錦产上、人聲如沸棵磷。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)仪媒。三九已至,卻和暖如春谢鹊,著一層夾襖步出監(jiān)牢的瞬間算吩,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工佃扼, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留偎巢,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓兼耀,卻偏偏與公主長(zhǎng)得像压昼,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子瘤运,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 今天給大家發(fā)一篇?jiǎng)偢绲奈恼虑舷肌_@篇文章絕對(duì)火爆,超級(jí)干貨拯坟,不看必后悔 目錄 主要從以下幾個(gè)方面給大家總結(jié)一下微信小程...
    藍(lán)鷗科技閱讀 857評(píng)論 1 1
  • afinalAfinal是一個(gè)android的ioc但金,orm框架 https://github.com/yangf...
    passiontim閱讀 15,429評(píng)論 2 45
  • 前言: 上一篇文章我們介紹了.wxml和.wxss文件,這篇文章對(duì)js文件進(jìn)行詳細(xì)的講解郁季,首先貼上一個(gè)簡(jiǎn)單的js文...
    Smile__EveryDay閱讀 20,173評(píng)論 0 7
  • 火車 載我 回故鄉(xiāng) 一千二百公里路 三小時(shí)四十五分鐘 一萬(wàn)八千次心跳 三十六次自言自語(yǔ) 七十二次喜憂無(wú)常
    老晁閱讀 97評(píng)論 0 0
  • 大四這年傲绣,認(rèn)識(shí)了一個(gè)男生掠哥。 說(shuō)是認(rèn)識(shí),其實(shí)就是坐在圖書(shū)館的同一張桌子邊學(xué)過(guò)習(xí)而已秃诵。 大學(xué)四年感覺(jué)很久,其實(shí)眨眨眼睛...
    貓自在閱讀 486評(píng)論 2 4