15個高頻微信小程序面試題


微信小程序面試題

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 : 頁面卸載時觸發。如 redirectTonavigateBack 到其餘頁面時.

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. 如何封裝小程序請求


    1. 封裝 wx.request  請求傳遞須要的參數( url ,   data ,   method , success 成功回調    , fail 失敗回調 )  , 封裝經常使用方法 POST ,   GET  , DELETE , PUT  ....  最後導出這些方法

    1. 而後新建一個 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'//響應的數據類型
    successfunction(res{
      wx.hideLoading();
      //成功執行方法,參數值爲res.data,直接將返回的數據傳入
      success(res.data);
    },
    failfunction() {
      //失敗執行方法
      fail();
    },
  })
}
module.exports = {
  postRequest: post,
  getRequestget,
}

組件使用 封裝好的請求

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. 微信受權流程





2020前端技術面試必備Vue:(一)基礎快速學習篇

2020前端技術面試必備Vue:(二)Router篇

2020前端技術面試必備Vue:(二)組件篇

2020前端技術面試必備Vue:(四)Vuex狀態管理

以上是Vue全家桶系列

全棧進階:Nginx基本功能及其原理

TypeScript&nbsp;快速入門(基礎篇)
MYSQL經常使用操做指令

更多精彩文章在公衆號







本文分享自微信公衆號 - 前端自學社區(gh_ce69e7dba7b5)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索