1、小程式的相關檔案類型
微信小程式項目結構主要有四個檔案類型:
wxml 架構設計的一套标簽語言,結合基礎元件、事件系統,可以建構出頁面的結構。内部主要是微信自己定義的一套元件。
wxss 是一套樣式語言,用于描述wxml的元件樣式
js 邏輯處理,網路請求
json 小程式設定,如頁面注冊,頁面标題及tabBar
主要檔案:
app.json 必須。這個檔案是配置檔案入口,整個小程式的全局配置。包括頁面注冊,網路設定,以及小程式的window背景色,配置導覽列樣式,配置預設标題。
app.js 必須。這裡監聽并處理小程式的生命周期函數,聲明全局變量。
app.wxss 可選
2、簡述微信小程式原理
微信小程式采用JavaScript、wxml、wxss三種技術進行開發,本質就是一個單頁面項目,所有的頁面渲染和事件處理,都在一個頁面内進行,但又可以通過微信用戶端調用原生的各種接口。
微信的架構,是資料驅動的架構樣式,它的ui和資料是分離的,所有的頁面更新,都需要通過對資料的更改來實作。
小程式分為兩個部分:webview和appServer。其中webview主要用來展現ui,appServer用來處理業務邏輯、資料及接口調用。它們在兩個程序中執行,通過系統層JSBridge實作通信,實作ui的渲染、事件的處理。
3、小程式的雙向綁定和vue哪裡不一樣
小程式直接使用this.data的屬性是不能同步到視圖的,必須調用:
4、小程式的wxss和css哪裡不一樣
wxss和css類似,不過在css的基礎上做了一些補充和修改
尺寸機關:rpx
rpx是響應式像素,可以根據螢幕寬度進行自适應。規定螢幕寬為750rpx。如在iPhone6上,螢幕寬度為375px,共有750個實體像素,則750rpx=375px=750實體像素。
使用@import标志符來導入外聯樣式,@import後跟需要導入的外聯樣式表的相對路徑,用;表示語句結束。
5、小程式有哪些傳遞資料的方法
①使用全局變量實作資料傳遞
在app.js中定義全局變量globalData,将需要存儲的資訊放在裡面
使用時,直接使用getApp()拿到存儲的資訊
②使用wx.navigateTo與wx.redirectTo的時候,可以将部分資料放在url裡面,并在新頁面onLoad的時候初始化
需要注意的問題:wx.navigateTo和wx.redirectTo不能跳轉到tab所包含的頁面
onLoad隻執行一次
③使用本地緩存Storage相關
6、小程式的生命周期函數
onLoad 頁面加載時觸發。一個頁面隻會調用一次,可以在onLoad的參數中擷取打開目前頁面路徑中的參數
onShow 頁面顯示/切入前台時觸發
onReady 頁面初次渲染完成時觸發。一個頁面隻會調用一次,代表頁面已經準備妥當,可以和視圖層進行互動
onHide 頁面隐藏/切入背景時觸發。如navigateTo或底部tab切換到其他頁面,小程式切入背景等
onUnload 頁面解除安裝時觸發,如redirectTo或navigateBack到其他頁面時
7、怎麼封裝小程式的資料請求
使用:
8、哪些方法可以提高微信小程式的應用速度
提高頁面加載速度
使用者行為預測
減少預設data的大小
元件化方案
9、微信小程式的優劣勢
優勢:①即用即走,不用安裝,省流量,省安裝時間,不占用桌面
②依托微信流量,推廣傳播優勢好
③開發成本比app低
劣勢:①使用者留存,即用即走是優勢,也存在一些問題
②入口相對傳統app要深很多
③限制較多,頁面大小不能超過2M,不能打開超過10個層級的頁面
10、怎麼解決小程式的異步請求問題
小程式支援大部分ES6文法
在傳回成功的回調裡處理邏輯
Promise異步
11、小程式關聯微信公衆号如何确定使用者的唯一性
如果開發者擁有多個移動應用、網站應用、公衆賬号(包括小程式),可通過unionid來區分使用者的唯一性,因為隻要是同一個微信開放平台賬号下的移動應用、網站應用和公衆賬号(包括小程式),使用者的unionid是唯一的。換句話說,同一使用者,對同一個微信開放平台下的不同應用,unionid是相同的。
12、如何實作下拉重新整理
①首先在遷居config中的window配置enablePullDownRefresh
②在Page中定義onPullDownRefresh鈎子函數,到達下拉重新整理條件後,該鈎子函數執行,發起請求方法
③請求傳回後,調用wx.stopPullDownRefresh停止下拉重新整理
13、bindtap和catchtap的差別是什麼
相同點:它們都是作為點選事件函數,都是點選時觸發。在這個作用上它們是一樣的,可以不做區分。
不同點:bindtap是不會阻止冒泡事件的,catchtap是阻止冒泡的
14、簡述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() 關閉所有頁面,打開到應用内的某個頁面