1. 小程序有幾個(gè)文件恰画?
WXML
: 微信自己定義的一套組件WXSS
: 用于描述WXML
的組件樣式js
: 邏輯處理json
: 小程序頁(yè)面配置
2.小程序怎么跟隨事件傳值
在 頁(yè)面標(biāo)簽上通過(guò) 綁定
dataset-key = value
, 然后綁定點(diǎn)擊通過(guò)e.currentTarget.dataset.key
來(lái)獲取標(biāo)簽上綁定的值瓷马。
<button bindtap="get" data-name="測(cè)試"> 拿到傳值</button>
get(e){
console.log(e.currentTarget.dataset.name)
},
3. 小程序 WXSS
與 CSS
的區(qū)別
WXSS
wxss
背景圖片只能引入外鏈拴还,不能使用本地圖片 小程序樣式使用@import
引入 外聯(lián)樣式文件,地址為相對(duì)路徑欧聘。 尺寸單位為rpx
,rpx
是響應(yīng)式像素,可以根據(jù)屏幕寬度進(jìn)行自適應(yīng)片林。
4. 小程序的雙向綁定和Vue哪里不一樣。
小程序 直接使用
this.data.key = value
是 不能更新到視圖當(dāng)中的怀骤。必須使用
this.setData({ key : value })
來(lái)更新值费封。
5. 小程序的生命周期函數(shù)
onLoad
: 頁(yè)面加載時(shí)觸發(fā)。一個(gè)頁(yè)面只會(huì)調(diào)用一次蒋伦,可以在onLoad
的參數(shù)中獲取打開(kāi)當(dāng)前頁(yè)面路徑中的參數(shù)onShow
: 頁(yè)面顯示 / 切入前臺(tái)時(shí)觸發(fā)調(diào)用弓摘。onReady
: 頁(yè)面初次渲染完成時(shí)觸發(fā),一個(gè)頁(yè)面只會(huì)調(diào)用一次。onHide
: 頁(yè)面隱藏 / 切入后臺(tái)時(shí)觸發(fā)痕届,如navigateTo
或底部tab
切換到其他頁(yè)面韧献,小程序切入后臺(tái)等onUnload
: 頁(yè)面卸載時(shí)觸發(fā)。如redirectTo
或navigateBack
到其他頁(yè)面時(shí).
6. 小程序怎么實(shí)現(xiàn)下拉刷新
兩種方案
方案 一 :
通過(guò)在
app.json
中研叫, 將"enablePullDownRefresh": true,
開(kāi)啟全局下拉刷新势决。 或者通過(guò)在組件 .json
, 將"enablePullDownRefresh": true,
單組件下拉刷新蓝撇。方案二:
scroll-view
: 使用該滾動(dòng)組件 自定義刷新果复,通過(guò)bindscrolltoupper
屬性, 當(dāng)滾動(dòng)到頂部/左邊渤昌,會(huì)觸發(fā)scrolltoupper
事件虽抄,所以我們可以利用這個(gè)屬性,來(lái)實(shí)現(xiàn)下拉刷新功能独柑。
7. bindtap
和 catchtap
區(qū)別
相同點(diǎn):
都是點(diǎn)擊事件
不同點(diǎn):
bindtap
不會(huì)阻止冒泡迈窟,catchtap
可以阻止冒泡。
8. 小程序有哪些傳遞數(shù)據(jù)的方法
\1. 使用全局變量
在
app.js
中的this.globalData = { }
中放入要存儲(chǔ)的數(shù)據(jù)忌栅。 在組件.js
中车酣, 頭部 引入const app = getApp();
獲取到全局變量 直接使用app.globalData.key
來(lái)進(jìn)行賦值和獲取值曲稼。\2. 使用 路由
wx.navigateTo
和wx.redirectTo
時(shí),可以通過(guò)在url
后 拼接 + 變量湖员, 然后在目標(biāo)頁(yè)面
通過(guò)在onLoad
周期中贫悄,通過(guò)參數(shù)來(lái)獲取傳遞過(guò)來(lái)的值。\3. 使用本地緩存
9. 簡(jiǎn)述下 wx.navigateTo()
, wx.redirectTo()
, wx.switchTab()
, wx.navigateBack()
, wx.reLaunch()
區(qū)別
wx.navigateTo()
: 保留當(dāng)前頁(yè)面娘摔,跳轉(zhuǎn)到應(yīng)用內(nèi)的某個(gè)頁(yè)面窄坦。但是不能跳到tabbar
頁(yè)面wx.redirectTo()
: 關(guān)閉當(dāng)前頁(yè)面,跳轉(zhuǎn)到應(yīng)用內(nèi)的某個(gè)頁(yè)面凳寺。但是不允許跳轉(zhuǎn)到tabbar
頁(yè)面wx.switchTab()
: 跳轉(zhuǎn)到TabBar
頁(yè)面鸭津,并關(guān)閉其他所有非tabBar
頁(yè)面wx.navigateBack()
: 關(guān)閉當(dāng)前頁(yè)面,返回上一頁(yè)面或多級(jí)頁(yè)面肠缨∧媲鳎可通過(guò)getCurrentPages()
獲取當(dāng)前的頁(yè)面棧,決定需要返回幾層wx.reLaunch()
: 關(guān)閉所有頁(yè)面晒奕,打開(kāi)到應(yīng)用的某個(gè)頁(yè)面父泳。
10. 小程序 wx:if
和 hidden
的區(qū)別
wx:if
: 有更高的切換消耗。hidden
: 有更高的初始渲染消耗吴汪。使用
頻繁切換使用
hidden
, 運(yùn)行時(shí)條件變化使用wx: if
11. app.json
全局配置文件描述
pages
: 用于存放當(dāng)前小程序的所有頁(yè)面路徑window
: 小程序所有頁(yè)面的頂部背景顏色,文字顏色配置蒸眠。tabBar
: 小程序底部的Tab
,最多5個(gè)漾橙,最少2個(gè)。
12. 如何封裝小程序請(qǐng)求
封裝
wx.request
請(qǐng)求傳遞需要的參數(shù)(url
,data
,method
,success 成功回調(diào)
楞卡,fail 失敗回調(diào)
) , 封裝常用方法POST
,GET
,DELETE
,PUT
.... 最后導(dǎo)出這些方法 然后新建一個(gè)api.js
文件霜运,導(dǎo)入封裝好的方法,然后調(diào)取相應(yīng)的方法蒋腮,傳遞數(shù)據(jù)淘捡。
wx.request 封裝
var app = getApp(); //獲取小程序全局唯一app實(shí)例
var host = '******************'; //接口地址
//POST請(qǐng)求
function post(url, data, success,fail) {
request(url, postData, "POST", doSuccess, doFail);
}
//GET請(qǐng)求
function get(url, data, success, fail) {
request(url, postData, "GET", doSuccess, doFail);
}
function request(url, data, method, success, fail) {
wx.showLoading({
title: "正在加載中...",
})
wx.request({
url: host + url, //請(qǐng)求地址
method: method, //請(qǐng)求方法
header: { //請(qǐng)求頭
"Content-Type": "application/json;charset=UTF-8"
},
data: data, //請(qǐng)求參數(shù)
dataType: 'json', //返回?cái)?shù)據(jù)格式
responseType: 'text', //響應(yīng)的數(shù)據(jù)類(lèi)型
success: function(res) {
wx.hideLoading();
//成功執(zhí)行方法,參數(shù)值為res.data,直接將返回的數(shù)據(jù)傳入
success(res.data);
},
fail: function() {
//失敗執(zhí)行方法
fail();
},
})
}
module.exports = {
postRequest: post,
getRequest: get,
}
組件使用 封裝好的請(qǐng)求
var http = require('../../utils/request.js'); //相對(duì)路徑
var params = {//請(qǐng)求參數(shù)
id:this.data.userId
}
http.postRequest("user/delUser", params, function(res) {
console.log("修改成功池摧!");
}, function(res) {
console.log("修改失斀钩!W魍膘魄!")
})
13. 小程序運(yùn)行機(jī)制
熱啟動(dòng)
:假如用戶(hù)已經(jīng)打開(kāi)了某個(gè)小程序,在一定時(shí)間內(nèi)再次打開(kāi)小程序的話竭讳,這個(gè)時(shí)候我們就不再需要重新啟動(dòng)了创葡,這需要把我們的后臺(tái)打開(kāi)的小程序切換到前臺(tái)來(lái)使用。冷啟動(dòng)
:用戶(hù)首次打開(kāi)小程序或被微信主動(dòng)銷(xiāo)毀再次打開(kāi)的情況绢慢,此時(shí)小程序需要重新加載啟動(dòng)灿渴。
14. 小程序什么時(shí)候會(huì)主動(dòng)銷(xiāo)毀?
小程序在進(jìn)入后臺(tái)之后,客戶(hù)端會(huì)幫我們?cè)谝欢〞r(shí)間內(nèi)維持我們的一個(gè)狀態(tài)骚露,超過(guò)五分鐘后蹬挤,會(huì)被微信主動(dòng)銷(xiāo)毀.
官方也沒(méi)有明確說(shuō)明 什么時(shí)候銷(xiāo)毀, 在不同機(jī)型表現(xiàn)也不一樣荸百,
2019年開(kāi)發(fā)時(shí):時(shí)間官方文檔沒(méi)有說(shuō)明闻伶,但是經(jīng)過(guò)詢(xún)問(wèn)一般指5分鐘內(nèi)
2020年開(kāi)發(fā)時(shí):時(shí)間官方文檔沒(méi)有說(shuō)明,實(shí)測(cè)安卓沒(méi)有固定時(shí)間够话,內(nèi)存足夠情況下蓝翰,有時(shí)候一天了還在,有時(shí)候幾分鐘就沒(méi)了女嘲。