面試題(2020)微信小程序常見面試題


面試題(2020)微信小程序常見面試題

博客說明

文章所涉及的資料來自互聯網整理和個人總結,意在於個人學習和經驗匯總,如有什么地方侵權,請聯系本人刪除,謝謝!

1、微信的小程序的主要文件

  • WXML——模板文件
  • JSON——配置/設置文件,如標題,tabbar,頁面注冊
  • WXSS——樣式文件,樣式可直接用import導入
  • JS——腳本邏輯文件,邏輯處理,網絡請求
  • app.json——配置文件入口,整個小程序的全局配置,網絡超時時間、底部tab、頁面路徑,window字段是小程序所有頁面的頂部背景顏色、文字顏色
  • app.js——可以沒有內容,可以在里邊監聽生命周期函數、聲明全局變量
  • app.wxss——全局配置樣式文件

2、數據請求怎么封裝

  • 將所有的接口放在統一的js文件中並導出(或者將請求地址、頭、方法在一個js文件里統一定義為一個常量並導出)
  • 在app.js創建封裝請求數據的方法
  • 在子頁面中調用封裝的方法請求數據

3、參數傳遞

  • 給HTML元素中添加data-*屬性來傳遞需要的值,之后通過e.currentTarget.dataset或onload的param參數獲取。注意不能有大寫字母,不可以存放對象
  • 跳轉頁面時通過navigator傳遞需要的參數值
  • 設置id的方法標識,通過e.currentTarget.id獲取設置的id值,然后通過設置全局變量的方法來傳遞數值

4、生命周期函數

  • onLoad——頁面加載,調一次
  • onShow——頁面顯示,每次打開頁面都調用
  • onReady——初次渲染完成,調一次
  • onHide——頁面隱藏,當navigateTo或底部tab切換時調用
  • onUnload——頁面卸載,當redirectTo或navigateBack時調用

5、小程序的雙向綁定和vue哪里不一樣

  • 小程序直接this.data的屬性是不可以同步到視圖的,必須調用this.setData({})

6、1px = 2rpx

7、如何自定義組件(彈窗)

  • 先創建一個components文件夾,用來存放所有自定義組件的,目錄結構依然是js,wxml,json,wxss

基本配置:

  • .json——進行自定義組件聲明
{
  "component": true
}

使用組件:

  • 假如在index.wxml中使用這個自定義的組件,首先在index.json中進行聲明
{  
  "usingComponents": {  
      "toastdemo": "/components/toastdemo/toastdemo"  
  }  
}
  • 接着在index.wxml中引用
  • 然后在index.js進行配置
  • 使用時直接執行this.toastdemo.showToast('彈框組件調用成功',2000)就可以了

8、小程序內的頁面跳轉

  • wx.navigateTo——保留當前頁面,跳轉到應用內的某個頁面。但是不能跳到 tabbar 頁面(參數必須為字符串)
  • wx.redirectTo——關閉當前頁面,跳轉到應用內的某個頁面。但是不允許跳轉到 tabbar 頁面
  • wx.switchTab——跳轉到 tabBar 頁面,並關閉其他所有非 tabBar 頁面,路徑后不能帶參數
  • wx.navigateBack——關閉當前頁面,返回上一頁面或多級頁面。可通過 getCurrentPages() 獲取當前的頁面棧,決定需要返回幾層
  • wx.reLaunch——關閉所有頁面,打開到應用內的某個頁面

9、小程序和Vue寫法的區別

  • 循環遍歷:小程序是wx:for="list",vue是v-for="inforin list"
  • 調用data模型:小程序是this.data.unifo,vue是this.unifo
  • 給模型賦值:小程序是this.setData({unifo:1}),vue是直接this.unifo=1

10、小程序的雙向綁定和vue哪里不一樣

  • 小程序直接this.data的屬性是不可以同步到視圖的,必須調用this.setData({})

11、小程序的優點和缺點

小程序的優點
  • 無需下載
  • 打開速度快
  • 開發成本低
  • 為用戶提供良好的安全保障。發布有一套嚴格的審查流程,不能通過審查的程序無法發布上線
  • 服務請求快
小程序的缺點
  • 依托微信,不能開發后台管理功能
  • 大小限制不能超過2M,不能打開超過5個層級的頁面

12、簡述小程序原理

  • 小程序分為兩個部分webview和appService,webview用來展現UI,appService用來處理業務邏輯、數據及接口調用,它們在兩個進程中運行,通過系統層JSBridge實現通信,完成UI渲染、事件處理。

13、提高小程序的應用速度的方法

  • 減少默認data的大小
  • 組件化方案,公用的如彈框等寫個自定義的組件,然后調用

14、簡述小程序原理

  • 小程序分為兩個部分webview和appService,webview用來展現UI,appService用來處理業務邏輯、數據及接口調用,它們在兩個進程中運行,通過系統層JSBridge實現通信,完成UI渲染、事件處理

15、setData的回調函數

微信小程序的setData實現是和react的setData實現類似的,所以它也是一個異步函數,並且有回調函數的參數,當然平時小量數據我們可能並沒有感覺到它的異步,但是為了確保邏輯的正確執行,在需要用到setData后 data里的數據的步驟,請寫入setData的回調函數中,如下示例:

this.setData({
  a: this.data.a++
  },()=>{
})

16、如何實現下拉刷新

  • 先在app.json或page.json中配置enablePullDownRefresh:true
  • page里用onPullDownRefresh函數,在下拉刷新時執行
  • 在下拉函數執行時發起數據請求,請求返回后,調用wx.stopPullDownRefresh停止下拉刷新的狀態

17、bindtap和catchtap的區別是什么

  • bindtap不會阻止冒泡事件,catchtap阻止冒泡

18、微信小程序與H5的區別?

①運行環境不同(小程序在微信運行,h5在瀏覽器運行);

②開發成本不同(h5需要兼容不同的瀏覽器);

③獲取系統權限不同(系統級權限可以和小程序無縫銜接);

④應用在生產環境的運行流暢度(h5需不斷對項目優化來提高用戶體驗);

19、小程序關聯微信公眾號如何確定用戶的唯一性?

使用wx.getUserInfo方法 withCredentials為true時,可獲取encryptedData,里面有union_id.后端需要進行對稱解密。

20、webview中的頁面怎么跳回小程序中

wx.miniProgram.navigateTo({url: '/pages/login/login'+'$params'})
wx.miniProgram.navigateTo({url: '/path/to/page'})

21、webview的頁面怎么跳轉到小程序導航的頁面?

小程序導航的頁面可以通過switchTab,但默認情況是不會重新加載數據的。若需加載新數據,則在success屬性中加入以下代碼即可:

success: function (e) {
  var page = getCurrentPages().pop();
  if (page == undefined || page == null) return;
  page.onLoad();
}
//webview的頁面,則通過
wx.miniProgram.switchTab({
  url: '/pages/index/index'  
})

22、小程序和小程序之間的跳轉

  • 在同一主體公眾號上關聯2個小程序appid,
  • navigator,對應設置一些屬性即可
  • target:miniProgram——其他小程序
  • target:self——當前小程序

感謝

萬能的網絡

以及勤勞的自己,個人博客GitHub

微信公眾號


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM