微信小程序_指南部分
微信小程序
下載安裝
創(chuàng)建項(xiàng)目
Step 1
Step2
Step3 目錄結(jié)構(gòu)
配置
1.我們直接在app.json中的pages寫入一下代碼
..."pages":["pages/welcome/welcome","pages/index/index","pages/logs/logs","palges/home/home","pages/kind/kind","pages/cart/cart","pages/user/user"], ...保存后會自動生成一下目錄結(jié)構(gòu)
- 其中index 和logs 是微信自帶的,其他的只需要你保存代碼,就會自動生成目錄結(jié)構(gòu)
學(xué)習(xí)api
小程序配置 : app.json
全局配置: 小程序根目錄下的 app.json 文件用來對微信小程序進(jìn)行全局配置。文件內(nèi)容為一個(gè) JSON 對象
包括頁面路徑、界面表現(xiàn)、底部tab
pages: 描述小程序所有頁面路徑,一目了然
window字段 - 定義小程序所有頁面背景顏色,文字顏色定義等。
tabBar:
-
這便是效果圖 其中的resources 是我自己去阿里圖標(biāo)庫自己找的icon
entryPagePath: String : 小程序默認(rèn)啟動頁設(shè)置
// 如果不填,將默認(rèn)為 pages 列表的第一項(xiàng)。不支持帶頁面路徑參數(shù)。 "entryPagePath": "palges/home/home", // 表示默認(rèn)啟動為首頁pages: String[] 必填項(xiàng) 頁面路徑列表
// 用于指定小程序由哪些頁面組成,每一項(xiàng)都對應(yīng)一個(gè)頁面的 路徑(含文件名) 信息。文件名不需要寫文件后綴,框架會自動去尋找對應(yīng)位置的 .json, .js, .wxml, .wxss 四個(gè)文件進(jìn)行處理。 // 未指定 entryPagePath 時(shí),數(shù)組的第一項(xiàng)代表小程序的初始頁面(首頁) {"pages": ["pages/index/index", "pages/logs/logs"] }window: Object: 非必填 全局默認(rèn)展示
navigationBarBackgroundColor: HexColor #00000
navigationBarTextStyle:String white 導(dǎo)航欄標(biāo)題顏色,僅支持 black / white
navigationBarTitleText :String 導(dǎo)航欄文字內(nèi)容
navigationStyle: String 默認(rèn)值default,僅支持default 和 custom 自定義導(dǎo)航欄
backgroundColor HexColor 默認(rèn)#ffffff 窗口的背景色 就是最下方的,下拉后顯示的顏色"backgroundColor": "#000",
backgroundTextStyle String 默認(rèn)dark 下拉loading 樣式,僅支持dark/light
若要開啟,需要配合后文提到的api,這里我先寫上看一看 enablePullDownRefresh
enablePullDownRefresh Boolean 默認(rèn) false
onPullDownRefresh() 監(jiān)聽用戶下拉刷新事件。需要在app.json的window選項(xiàng)中或頁面配置中開啟enablePullDownRefresh。 可以通過wx.startPullDownRefresh觸發(fā)下拉刷新,調(diào)用后觸發(fā)下拉刷新動畫,效果與用戶手動下拉刷新一致。 當(dāng)處理完數(shù)據(jù)刷新后,wx.stopPullDownRefresh可以停止當(dāng)前頁面的下拉刷新。onReachBottomDistance number 默認(rèn) 50 頁面上拉觸底事件觸發(fā)時(shí)距頁面底部距離,單位為 px。
onReachBottom() 監(jiān)聽用戶上拉觸底事件。可以在app.json的window選項(xiàng)中或頁面配置中設(shè)置觸發(fā)距離onReachBottomDistance。 在觸發(fā)距離內(nèi)滑動期間,本事件只會被觸發(fā)一次。pageOrientation String 默認(rèn)值 portrait 屏幕旋轉(zhuǎn)設(shè)置,支持 auto/portrait/landscape 橫屏
restartStrategy Sting 默認(rèn)值 homePage 重新啟動策略配置
initialRenderingCache String 頁面初始渲染緩存配置,支持 static / dynamic
visualEffectInBackground String 默認(rèn)值 none 切入系統(tǒng)后臺時(shí),隱藏頁面內(nèi)容,保護(hù)用戶隱私。支持 hidden / none
networkTimeout Object 網(wǎng)絡(luò)超時(shí)時(shí)間
debug Boolean 開啟關(guān)閉debug模式,默認(rèn)關(guān)閉
functionalPages Boolean 是否啟用插件功能頁,默認(rèn)關(guān)閉
subpackages Object[] 分包結(jié)構(gòu)配置
使用分包
先在app.json 聲明項(xiàng)目分包結(jié)構(gòu)
"subpackages": [{"root": "searchMode","name": "search","pages": ["pages/search"]}, {"root": "login","name": "login","pages": ["pages/login"]}, {"root": "register","name": "register","pages": ["pages/register"]}],├── app.js ├── app.json ├── app.wxss ├── searchMode │ └── pages │ ├── search ├── login │ └── pages │ ├── login ├── register │ └── pages │ ├── register ├── pages │ ├── index │ └── log字段:
root String 分包根目錄
name String 分包別名,分包預(yù)下載時(shí)可以使用
pages StringArray 分包頁面路徑,相對與分包根目錄
independent Boolean 分包是否獨(dú)立分包
打包原則
獨(dú)立分包
開發(fā)者通過在app.json的subpackages字段中對應(yīng)的分包配置項(xiàng)中定義independent字段聲明對應(yīng)分包為獨(dú)立分包。
獨(dú)立分包屬于分包的一種。普通分包的所有限制都對獨(dú)立分包有效。獨(dú)立分包中插件、自定義組件的處理方式同普通分包。
此外,使用獨(dú)立分包時(shí)要注意:
- 獨(dú)立分包中不能依賴主包和其他分包中的內(nèi)容,包括 js 文件、template、wxss、自定義組件、插件等(使用 分包異步化 時(shí) js 文件、自定義組件、插件不受此條限制)
- 主包中的 app.wxss 對獨(dú)立分包無效,應(yīng)避免在獨(dú)立分包頁面中使用 app.wxss 中的樣式;
- App 只能在主包內(nèi)定義,獨(dú)立分包中不能定義 App,會造成無法預(yù)期的行為;
- 獨(dú)立分包中暫時(shí)不支持使用插件。
- 與普通分包不同,獨(dú)立分包運(yùn)行時(shí),App 并不一定被注冊,因此 getApp() 也不一定可以獲得 App 對象:
- 當(dāng)用戶從獨(dú)立分包頁面啟動小程序時(shí),主包不存在,App也不存在,此時(shí)調(diào)用 getApp() 獲取到的是 undefined。 當(dāng)用戶進(jìn)入普通分包或主包內(nèi)頁面時(shí),主包才會被下載,App 才會被注冊。(不過這里我是獲取到app實(shí)例了)
分包預(yù)下載
開發(fā)者可以通過配置,在進(jìn)入小程序某個(gè)頁面時(shí),由框架自動預(yù)下載可能需要的分包,提升進(jìn)入后續(xù)分包頁面時(shí)的啟動速度。對于獨(dú)立分包,也可以預(yù)下載主包。
分包預(yù)下載目前只支持通過配置方式使用,暫不支持通過調(diào)用API完成。
預(yù)下載分包行為在進(jìn)入某個(gè)頁面時(shí)觸發(fā),通過在 app.json 增加 preloadRule 配置來控制。
packages 是必填項(xiàng),類型是String類型,無默認(rèn)值,進(jìn)入頁面后預(yù)下載分包的 root 或 name。__APP__ 表示主包。
分包異步化
在小程序中,不同的分包對應(yīng)不同的下載單元;因此,除了非獨(dú)立分包可以依賴主包外,分包之間不能互相使用自定義組件或進(jìn)行 require。分包異步化特性將允許通過一些配置和新的接口,使部分跨分包的內(nèi)容可以等待下載后異步使用,從而一定程度上解決這個(gè)限制。
在這個(gè)配置中,button 和 list 兩個(gè)自定義組件是跨分包引用組件,其中 button 在渲染時(shí)會使用內(nèi)置組件 view 作為替代,list 會使用當(dāng)前分包內(nèi)的自定義組件 simple-list 作為替代進(jìn)行渲染;在這兩個(gè)分包下載完成后,占位組件就會被替換為對應(yīng)的跨分包組件。
一個(gè)分包中的代碼引用其它分包的代碼時(shí),為了不讓下載阻塞代碼運(yùn)行,我們需要異步獲取引用的結(jié)果。
worker
多線程 Worker
一些異步處理的任務(wù),可以放置于 Worker 中運(yùn)行,待運(yùn)行結(jié)束后,再把結(jié)果返回到小程序主線程。Worker 運(yùn)行于一個(gè)單獨(dú)的全局上下文與線程中,不能直接調(diào)用主線程的方法。
Worker 與主線程之間的數(shù)據(jù)傳輸,雙方使用 Worker.postMessage() 來發(fā)送數(shù)據(jù),Worker.onMessage() 來接收數(shù)據(jù),傳輸?shù)臄?shù)據(jù)并不是直接共享,而是被復(fù)制的。
使用 Worker處理多線程任務(wù)時(shí),設(shè)置 Worker 代碼放置的目錄
在app.json 中配置 {“workers”: “workers”}
添加worker代碼文件
workers/request/index.js workers/request/utils.js workers/response/index.js├── app.js ├── app.json ├── project.config.json └── workers├── request│ ├── index.js│ └── utils.js└── response└── index.js編寫 Worker 代碼
在 workers/request/index.js 編寫 Worker 響應(yīng)代碼
const utils = require('./utils')// 在 Worker 線程執(zhí)行上下文會全局暴露一個(gè) worker 對象,直接調(diào)用 worker.onMessage/postMessage 即可 worker.onMessage(function (res) {console.log(res) })在主線程中初始化 Worker
// +++ app.js中注冊一下 const worker = wx.createWorker('workers/request/index.js') // 文件名指定 worker 的入口文件路徑,絕對路徑主線程向worker發(fā)送消息
worker.postMessage({msg: 'hello worker' })注意:
requiredBackgroundModes
聲明需要使用運(yùn)行在后臺,如音樂播放,后臺定位
resizable
屏幕旋轉(zhuǎn)
顯示區(qū)域尺寸
顯示區(qū)域指小程序界面中可以自由布局展示的區(qū)域。在默認(rèn)情況下,小程序顯示區(qū)域的尺寸自頁面初始化起就不會發(fā)生變化。但以下兩種方式都可以改變這一默認(rèn)行為。
Media Query 解決不同尺寸的顯示區(qū)域,頁面的布局會有所差異
頁面尺寸發(fā)生改變的事件,可以使用頁面的 onResize 來監(jiān)聽。對于自定義組件,可以使用 resize 生命周期來監(jiān)聽。回調(diào)函數(shù)中將返回顯示區(qū)域的尺寸信息。(從基礎(chǔ)庫版本開始支持。)
permission 授權(quán)
部分接口需要經(jīng)過用戶授權(quán)同意才能調(diào)用。我們把這些接口按使用范圍分成多個(gè) scope ,用戶選擇對 scope 來進(jìn)行授權(quán),當(dāng)授權(quán)給一個(gè) scope 之后,其對應(yīng)的所有接口都可以直接使用。
此類接口調(diào)用時(shí):
- 如果用戶未接受或拒絕過此權(quán)限,會彈窗詢問用戶,用戶點(diǎn)擊同意后方可調(diào)用接口;
- 如果用戶已授權(quán),可以直接調(diào)用接口;
- 如果用戶已拒絕授權(quán),則不會出現(xiàn)彈窗,而是直接進(jìn)入接口 fail 回調(diào)。
開發(fā)者可以使用 wx.getSetting 獲取用戶當(dāng)前的授權(quán)狀態(tài)。
用戶可以在小程序設(shè)置界面(「右上角」 - 「關(guān)于」 - 「右上角」 - 「設(shè)置」)中控制對該小程序的授權(quán)狀態(tài)。
開發(fā)者可以調(diào)用 wx.openSetting 打開設(shè)置界面,引導(dǎo)用戶開啟授權(quán)。
開發(fā)者可以使用 wx.authorize 在調(diào)用需授權(quán) API 之前,提前向用戶發(fā)起授權(quán)請求。
總結(jié)
以上是生活随笔為你收集整理的微信小程序_指南部分的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 游戏名字符号大全167个
- 下一篇: 对象作为函数参数可能会导致的问题