小北微信小程序小白系列教程第二篇 -- 入口

作為一名后端開(kāi)發(fā)人員,我希望能從后端語(yǔ)言的某些模式來(lái)理解小程序,讓我快速的入門(mén)。

今天我們依然模擬一個(gè)女項(xiàng)目經(jīng)理和后端工程師的博弈,為你逐步展開(kāi)小程序的面紗。

角色定位

  • 女一號(hào) 大櫻桃:女項(xiàng)目經(jīng)理,30歲,未婚。
  • 男一號(hào) 老沙:帥氣的后端工程師,30歲,已婚。

App

當(dāng)聽(tīng)到大櫻桃這樣說(shuō)自己的時(shí)候,老沙明白的確是自己的問(wèn)題,小程序工具為我們生成了一個(gè)基礎(chǔ)的框架,但是這個(gè)框架里的文件都是做什么用,每個(gè)文件如何去操作他并不知道,這的確是一個(gè)問(wèn)題。

于是老沙決定用30分鐘的時(shí)候先研究下其中的 app.js / app.json / app.wxss / project.config.json

app.js

從微信小程序官方文檔我們知道:“小程序包含一個(gè)描述整體程序的 app 和多個(gè)描述各自頁(yè)面的 page?!?,而app的構(gòu)建、維護(hù)以及配置就是由上面4個(gè)文件管理的。

@@nai8@@

當(dāng)我們打開(kāi)一個(gè)小程序的時(shí)候,伴隨著生成一個(gè)小程序的實(shí)例,這個(gè)很像yii中入口對(duì)application的生成邏輯。

同時(shí)提供了一個(gè)叫做App()的函數(shù)用來(lái)接收

小程序?qū)嵗?/strong>

完成最后的注冊(cè),這個(gè)函數(shù)存在于app.js中,而所謂的注冊(cè),里面可以包含我們自己的邏輯,比如啟動(dòng)后你想做什么?遇到錯(cuò)誤你想做什么,這些都可以在注冊(cè)小程序的時(shí)候?qū)崿F(xiàn)。

打開(kāi)你的app.js,你發(fā)現(xiàn)有4+個(gè)函數(shù),4個(gè)內(nèi)置函數(shù)和你可以自己定義的N個(gè)函數(shù)。

名詞解釋

  • onLanuch 當(dāng)小程序初始化完成時(shí),會(huì)觸發(fā) onLaunch(全局只觸發(fā)一次)
  • onShow 當(dāng)小程序啟動(dòng),或從后臺(tái)進(jìn)入前臺(tái)顯示,會(huì)觸發(fā) onShow
  • onHide 當(dāng)小程序從前臺(tái)進(jìn)入后臺(tái),會(huì)觸發(fā) onHide
  • onError 當(dāng)小程序發(fā)生腳本錯(cuò)誤,或者 api 調(diào)用失敗時(shí),會(huì)觸發(fā) onError 并帶上錯(cuò)誤信息

這里有一個(gè)疑問(wèn)我想大家也會(huì)遇到,就是前后臺(tái)的概念,簡(jiǎn)單的說(shuō)就是當(dāng)你在左上角關(guān)閉小程序后(或按home鍵退出微信),這個(gè)小程序并不會(huì)真正的銷(xiāo)毀而是進(jìn)入后臺(tái)模式運(yùn)行,當(dāng)再次打開(kāi)進(jìn)入前臺(tái)運(yùn)行而非重新啟動(dòng)。

最明顯的一個(gè)現(xiàn)象就是你在小程序某個(gè)特定頁(yè)面關(guān)閉小程序,再次打開(kāi)會(huì)直接進(jìn)入這個(gè)特定頁(yè)面而非啟動(dòng)頁(yè)。

globalData

這個(gè)字段也很有用。用來(lái)存放一些全局的東西,比如統(tǒng)一的遠(yuǎn)程接口地址等,這里設(shè)置的值是有辦法在其他page頁(yè)面使用的。

比如某個(gè)小程序的globalData如下圖

N個(gè)函數(shù)

我們都知道除了內(nèi)置的函數(shù),我們也可以在app.js里寫(xiě)其他函數(shù),那么問(wèn)題來(lái)了?什么函數(shù)要寫(xiě)到app.js里那?

回答這個(gè)問(wèn)題之前我們要先知道一個(gè)事情,那就是在小程序的其他頁(yè)面可以通過(guò)getApp函數(shù)獲取到app對(duì)象,進(jìn)而可以調(diào)用app.js里的東西,也就是說(shuō)你在app.js里定義的那些N個(gè)函數(shù)可以被其他頁(yè)面獲取并使用。

這樣你明白了吧?比如登錄函數(shù)、獲取用戶(hù)信息、彈出框等用于整個(gè)app的高頻函數(shù)都可以寫(xiě)到app.js中。

研究到此,老沙欣慰的一笑,先來(lái)杯咖啡。

onLaunch

接下來(lái)老沙決定研究一下onLaunch函數(shù),首先要說(shuō)的是onLaunch的參數(shù)options里都有什么?很簡(jiǎn)單,在onLaunch函數(shù)內(nèi)寫(xiě)下了console.log(options)將它打印到控制臺(tái)。


在今后的日子里,如果你不清楚一個(gè)對(duì)象或參數(shù)什么的,記住使用console.log打印到控制臺(tái),很方便。

當(dāng)然,onLaunch可以獲取很多參數(shù),比如path代表打開(kāi)小程序的路徑,當(dāng)你分享小程序某個(gè)頁(yè)面A到微信群,別人通過(guò)A打開(kāi)了小程序,則path就是A頁(yè)面的路徑。

關(guān)于參數(shù)的詳細(xì)介紹可以看下圖

path、query、scene是常規(guī)的參數(shù),在特定情況下會(huì)出現(xiàn)其他參數(shù),比如當(dāng)你要捕獲群分享后的數(shù)據(jù)時(shí)shareTicket參數(shù)會(huì)出現(xiàn)等等。

一般來(lái)說(shuō)當(dāng)一個(gè)小程序啟動(dòng)后就需要做的事情可以寫(xiě)到onLaunch函數(shù),比如登錄。

而onShow接收的參數(shù)和onLanuch是一致的。

注意點(diǎn)

官方給了一些注意點(diǎn),基本就是所有了,列下方便大家學(xué)習(xí)。

  • App() 必須在 app.js 中注冊(cè),且不能注冊(cè)多個(gè)。
  • 不要在定義于 App() 內(nèi)的函數(shù)中調(diào)用 getApp() ,使用 this 就可以拿到 app 實(shí)例。
  • 不要在 onLaunch 的時(shí)候調(diào)用 getCurrentPages(),此時(shí) page 還沒(méi)有生成。
  • 通過(guò) getApp() 獲取實(shí)例之后,不要私自調(diào)用生命周期函數(shù)。

對(duì)于上面的getApp你可能還不了解,接下來(lái)研究下。

getApp

這是一個(gè)函數(shù),主要目的是在其他頁(yè)面獲取app實(shí)例,比如接下來(lái)的代碼

獲取后你就可以在頁(yè)面函數(shù)體內(nèi)直接調(diào)用app.js的函數(shù)和數(shù)據(jù),比如 http://app.xxx() 或app.globalData這樣。

這里要重復(fù)下上面的注意事項(xiàng):不要在定義于 App() 內(nèi)的函數(shù)中調(diào)用 getApp()

app.json

一頓研究后,老沙對(duì)app.js已經(jīng)基本了解,接下來(lái)攻克app.json這個(gè)文件。微信官方是這樣說(shuō)的:“app.json文件用來(lái)對(duì)微信小程序進(jìn)行全局配置,決定頁(yè)面文件的路徑、窗口表現(xiàn)、設(shè)置網(wǎng)絡(luò)超時(shí)時(shí)間、設(shè)置多 tab 等。”

接下來(lái)用老百姓的話為大家解釋下:

  • 將頁(yè)面注冊(cè)到小程序如何配置?找app.json
  • 如何設(shè)置導(dǎo)航欄顏色?找app.json
  • 如何制定窗口背景顏色?找app.json
  • 如何啟動(dòng)下拉功能?找app.json
  • 如何設(shè)置小程序底部tab切換頁(yè)面?找app.json
  • 如何設(shè)置網(wǎng)絡(luò)超時(shí)時(shí)間?找app.json

一句話,和小程序自身相關(guān)的配置,去app.json里找。

關(guān)于app.json里的詳細(xì)配合可以參考官方地址

https://mp.weixin.qq.com/debu...

app.wxss

最好理解的就是它了,上篇大家已經(jīng)知道wxss是樣式文件,app.wxss則是小程序的全局樣式,它可以應(yīng)用到所有page頁(yè)面。

wxss是微信小程序自己定義的樣式語(yǔ)言,它支持內(nèi)聯(lián)、導(dǎo)入等等。同時(shí)具有css大部分的特性,所以你可以像寫(xiě)css一樣寫(xiě)它們。

關(guān)于使用方法可以參考

https://mp.weixin.qq.com/debu...

project.config.json

這是一個(gè)項(xiàng)目配置文件,比如項(xiàng)目的名字,appid等等。

如果你還不懂,可以看下開(kāi)發(fā)工具的詳情,那里面的設(shè)置和project.config.json是一樣的,一個(gè)配置文件,一個(gè)可視化的,目的是一樣的。

小結(jié)

30分鐘過(guò)去了,老沙基本搞明白了入口的邏輯,趕緊給大櫻桃看看去。

.......

10分鐘過(guò)去了

.......

老沙低著腦袋回來(lái)了,為何?下回給你說(shuō)。

相關(guān)閱讀:

小北微信小程序小白系列教程第一篇-- Hello World

本文作者:北哥 個(gè)人站長(zhǎng) @ 北哥兄弟連
原文地址:小北微信小程序之小白教程系列之-入口-入門(mén)系列-小程序社區(qū)-微信小程序-微信小程序開(kāi)發(fā)社區(qū)-小程序開(kāi)發(fā)論壇-微信小程序聯(lián)盟

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

相關(guān)閱讀更多精彩內(nèi)容

  • 1.小程序起步 (1)點(diǎn)擊https://mp.weixin.qq.com/wxopen/waregister?a...
    GXW_Lyon閱讀 3,630評(píng)論 0 0
  • 因新工作主要負(fù)責(zé)微信小程序這一塊,最近的重心就移到這一塊,該博客是對(duì)微信小程序整體的整理歸納以及標(biāo)明一些細(xì)節(jié)點(diǎn),初...
    majun00閱讀 7,656評(píng)論 0 9
  • 版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明出處【by:待孤君臨天下】 前言:因項(xiàng)目需求,本人需要開(kāi)發(fā)微信小程序(之前...
    待孤君臨天下閱讀 8,541評(píng)論 1 1
  • 曾經(jīng)一度以為,真正的愛(ài)情就該是轟轟烈烈的,就算全世界都與你為敵,你也有勇敢和他在一起的勇氣。你們一起對(duì)抗反對(duì)的...
    尹sunshing閱讀 1,191評(píng)論 0 1
  • 自由放任生活兩天之后,明天生活照常繼續(xù),工作正常繼續(xù),從你的全世界路過(guò),雖然沒(méi)有巧合安排的意中人,但是有這么一群為...
    沉默明宇閱讀 209評(píng)論 0 0

友情鏈接更多精彩內(nèi)容