微信小程序面試題
1. 小程序有幾個文件?
WXML
:微信本身定義的一套組件WXSS
: 用於描述WXML
的組件樣式js
: 邏輯處理json
: 小程序頁面配置
2.小程序怎麼跟隨事件傳值
在 頁面標籤上經過 綁定
dataset-key = value
, 而後綁定點擊經過e.currentTarget.dataset.key
來獲取標籤上綁定的值。前端
<button bindtap="get" data-name="測試"> 拿到傳值</button>
get(e){
console.log(e.currentTarget.dataset.name)
},
3. 小程序 WXSS
與 CSS
的區別
WXSS
wxss
背景圖片只能引入外鏈,不能使用本地圖片web小程序樣式使用
@import
引入 外聯樣式文件,地址爲相對路徑。面試尺寸單位爲
rpx
,rpx
是響應式像素,能夠根據屏幕寬度進行自適應。json
4. 小程序的雙向綁定和Vue哪裏不同。
小程序 直接使用
this.data.key = value
是 不能更新到視圖當中的。小程序必須使用
this.setData({ key :value })
來更新值。微信小程序
5. 小程序的生命週期函數
onLoad
: 頁面加載時觸發。一個頁面只會調用一次,能夠在onLoad
的參數中獲取打開當前頁面路徑中的參數onShow
: 頁面顯示 / 切入前臺時觸發調用。onReady
: 頁面初次渲染完成時觸發,一個頁面只會調用一次。onHide
: 頁面隱藏 / 切入後臺時觸發,如navigateTo
或底部tab
切換到其餘頁面,小程序切入後臺等onUnload
: 頁面卸載時觸發。如redirectTo
或navigateBack
到其餘頁面時.
6. 小程序怎麼實現下拉刷新
兩種方案
方案 一 :
經過在 app.json
中, 將"enablePullDownRefresh": true,
開啓全局下拉刷新。或者經過在 組件 .json
, 將"enablePullDownRefresh": true,
單組件下拉刷新。方案二:
scroll-view
:使用該滾動組件 自定義刷新,經過bindscrolltoupper
屬性, 當滾動到頂部/左邊,會觸發scrolltoupper
事件,因此咱們能夠利用這個屬性,來實現下拉刷新功能。
7. bindtap
和 catchtap
區別
相同點:
都是點擊事件
api不一樣點:
bindtap
不會阻止冒泡,catchtap
能夠阻止冒泡。緩存
8. 小程序有哪些傳遞數據的方法
1. 使用全局變量
在 app.js
中的this.globalData = { }
中放入要存儲的數據。在 組件.js
中, 頭部 引入const app = getApp();
獲取到全局變量直接使用 app.globalData.key
來進行賦值和獲取值。2. 使用 路由
wx.navigateTo
和wx.redirectTo
時,能夠經過在url
後 拼接 + 變量, 而後在目標頁面
經過在onLoad
週期中,經過參數來獲取傳遞過來的值。3. 使用本地緩存
9. 簡述下 wx.navigateTo()
, wx.redirectTo()
, wx.switchTab()
, wx.navigateBack()
, wx.reLaunch()
區別
wx.navigateTo()
: 保留當前頁面,跳轉到應用內的某個頁面。可是不能跳到tabbar
頁面wx.redirectTo()
: 關閉當前頁面,跳轉到應用內的某個頁面。可是不容許跳轉到tabbar
頁面wx.switchTab()
: 跳轉到TabBar
頁面,並關閉其餘全部非tabBar
頁面wx.navigateBack()
: 關閉當前頁面,返回上一頁面或多級頁面。可經過getCurrentPages()
獲取當前的頁面棧,決定須要返回幾層wx.reLaunch()
: 關閉全部頁面,打開到應用的某個頁面。
10. 小程序 wx:if
和 hidden
的區別
wx:if
: 有更高的切換消耗。hidden
: 有更高的初始渲染消耗。使用
頻繁切換使用 hidden
, 運行時條件變化使用wx: if
11. app.json
全局配置文件描述
pages
: 用於存放當前小程序的全部頁面路徑window
: 小程序全部頁面的頂部背景顏色,文字顏色配置。tabBar
: 小程序底部的Tab
,最多5個,最少2個。
12. 如何封裝小程序請求
封裝 wx.request
請求傳遞須要的參數(url
,data
,method
,success 成功回調
,fail 失敗回調
) , 封裝經常使用方法POST
,GET
,DELETE
,PUT
.... 最後導出這些方法
而後新建一個 api.js
文件,導入封裝好的方法,而後調取相應的方法,傳遞數據。
wx.request 封裝
var app = getApp(); //獲取小程序全局惟一app實例
var host = '******************'; //接口地址
//POST請求
function post(url, data, success,fail) {
request(url, postData, "POST", doSuccess, doFail);
}
//GET請求
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, //請求地址
method: method, //請求方法
header: { //請求頭
"Content-Type": "application/json;charset=UTF-8"
},
data: data, //請求參數
dataType: 'json', //返回數據格式
responseType: 'text', //響應的數據類型
success: function(res) {
wx.hideLoading();
//成功執行方法,參數值爲res.data,直接將返回的數據傳入
success(res.data);
},
fail: function() {
//失敗執行方法
fail();
},
})
}
module.exports = {
postRequest: post,
getRequest: get,
}
組件使用 封裝好的請求
var http = require('../../utils/request.js'); //相對路徑
var params = {//請求參數
id:this.data.userId
}
http.postRequest("user/delUser", params, function(res) {
console.log("修改爲功!");
}, function(res) {
console.log("修改失敗!!!")
})
13. 小程序運行機制
熱啓動
:假如用戶已經打開了某個小程序,在必定時間內再次打開小程序的話,這個時候咱們就再也不須要從新啓動了,這須要把咱們的後臺打開的小程序切換到前臺來使用。冷啓動
:用戶首次打開小程序或被微信主動銷燬再次打開的狀況,此時小程序須要從新加載啓動。
14. 小程序何時會主動銷燬?
小程序在進入後臺以後,客戶端會幫咱們在必定時間內維持咱們的一個狀態,超過五分鐘後,會被微信主動銷燬.微信
官方也沒有明確說明 何時銷燬, 在不一樣機型表現也不同,
2019年開發時:時間官方文檔沒有說明,可是通過詢問通常指5分鐘內app
2020年開發時:時間官方文檔沒有說明,實測安卓沒有固定時間,內存足夠狀況下,有時候一天了還在,有時候幾分鐘就沒了。
15. 微信受權流程
以上是Vue全家桶系列
TypeScript 快速入門(基礎篇)
MYSQL經常使用操做指令
更多精彩文章在公衆號
本文分享自微信公衆號 - 前端自學社區(gh_ce69e7dba7b5)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。