首先說一些爲何總結小程序相關的面試題吧css
咱們能夠隨便打開一個招聘網站,在那裏你會發現市場對於小程序的需求仍是蠻高的,有些公司可能就只須要寫小程序的前端人員html
雖然小程序的開發很大一部分都是很簡單的,可是有些經常使用的東西仍是有必要了解一下的。故此,有了這樣一篇小程序面試題的總結。固然感興趣或者有須要的小夥伴也能夠 點擊這裏,查看完整版前端面試題前端
若是文章中有出現紕漏、錯誤之處,還請看到的小夥伴留言指正,先行謝過vue
如下 ↓git
微信小程序項目結構主要有四個文件類型
WXML
(WeiXin Markup Language)是框架設計的一套標籤語言,結合基礎組件、事件系統,能夠構建出頁面的結構。內部主要是微信本身定義的一套組件WXSS
(WeiXin Style Sheets)是一套樣式語言,用於描述 WXML
的組件樣式js
邏輯處理,網絡請求json
小程序設置,如頁面註冊,頁面標題及tabBar
主要文件
app.json
必需要有這個文件,若是沒有這個文件,項目沒法運行,由於微信框架把這個做爲配置文件入口,整個小程序的全局配置。包括頁面註冊,網絡設置,以及小程序的 window
背景色,配置導航條樣式,配置默認標題app.js
必需要有這個文件,沒有也是會報錯!可是這個文件建立一下就行 什麼都不須要寫之後咱們能夠在這個文件中監聽並處理小程序的生命週期函數、聲明全局變量app.wxss
可選微信小程序採用JavaScript
、WXML
、WXSS
三種技術進行開發,本質就是一個單頁面應用,全部的頁面渲染和事件處理,都在一個頁面內進行,但又能夠經過微信客戶端調用原生的各類接口微信的架構,是數據驅動的架構模式,它的
UI
和數據是分離的,全部的頁面更新,都須要經過對數據的更改來實現github小程序分爲兩個部分
webview
和appService
。其中webview
主要用來展示UI
,appService
有來處理業務邏輯、數據及接口調用。它們在兩個進程中運行,經過系統層JSBridge
實現通訊,實現UI
的渲染、事件的處理web
小程序直接 this.data
的屬性是不能夠同步到視圖的,必須調用:面試
this.setData({ // 這裏設置 })
WXSS
和CSS
相似,不過在CSS
的基礎上作了一些補充和修改
rpx
rpx
是響應式像素,能夠根據屏幕寬度進行自適應。規定屏幕寬爲 750rpx
。如在 iPhone6
上,屏幕寬度爲 375px
,共有 750
個物理像素,則 750rpx = 375px = 750
物理像素json
@import
標識符來導入外聯樣式。@import
後跟須要導入的外聯樣式表的相對路徑,用;表示語句結束/** index.wxss **/ @import './base.wxss'; .container{ color: red; }
在 app.js
文件中定義全局變量 globalData
, 將須要存儲的信息存放在裏面小程序
// app.js App({ // 全局變量 globalData: { userInfo: null } })
使用的時候,直接使用 getApp()
拿到存儲的信息
wx.navigateTo
與 wx.redirectTo
的時候,能夠將部分數據放在 url
裏面,並在新頁面 onLoad
的時候初始化//pageA.js // Navigate wx.navigateTo({ url: '../pageD/pageD?name=raymond&gender=male', }) // Redirect wx.redirectTo({ url: '../pageD/pageD?name=raymond&gender=male', }) // pageB.js ... Page({ onLoad: function(option){ console.log(option.name + 'is' + option.gender) this.setData({ option: option }) } })
須要注意的問題:
wx.navigateTo
和 wx.redirectTo
不容許跳轉到 tab
所包含的頁面
onLoad
只執行一次
Storage
相關onLoad
頁面加載時觸發。一個頁面只會調用一次,能夠在 onLoad
的參數中獲取打開當前頁面路徑中的參數onShow()
頁面顯示/切入前臺時觸發onReady()
頁面初次渲染完成時觸發。一個頁面只會調用一次,表明頁面已經準備穩當,能夠和視圖層進行交互onHide()
頁面隱藏/切入後臺時觸發。 如 navigateTo
或底部 tab
切換到其餘頁面,小程序切入後臺等onUnload()
頁面卸載時觸發。如 redirectTo
或 navigateBack
到其餘頁面時詳見 生命週期回調函數
參考 這裏
一、提升頁面加載速度
二、用戶行爲預測
三、減小默認 data
的大小
四、組件化方案
優點
App
低缺點
App
要深不少
小程序支持大部分
ES6
語法
Promise
異步若是開發者擁有多個移動應用、網站應用、和公衆賬號(包括小程序),可經過unionid
來區分用戶的惟一性,由於只要是同一個微信開放平臺賬號下的移動應用、網站應用和公衆賬號(包括小程序),用戶的unionid
是惟一的。換句話說,同一用戶,對同一個微信開放平臺下的不一樣應用,unionid
是相同的
config
中的 window
配置 enablePullDownRefresh
Page
中定義 onPullDownRefresh
鉤子函數,到達下拉刷新條件後,該鉤子函數執行,發起請求方法wx.stopPullDownRefresh
中止下拉刷新參考 這裏
相同點:首先他們都是做爲點擊事件函數,就是點擊時觸發。在這個做用上他們是同樣的,能夠不作區分
不一樣點:他們的不一樣點主要是bindtap是不會阻止冒泡事件的,catchtap是阻值冒泡的
wx.navigateTo()
, wx.redirectTo()
, wx.switchTab()
, wx.navigateBack()
, wx.reLaunch()
的區別</h5>tabbar
頁面tabbar
頁面abBar
頁面,並關閉其餘全部非 tabBar
頁面getCurrentPages()
獲取當前的頁面棧,決定須要返回幾層不少東西真正作一遍,收穫必定是最大的,那些途中踩過的坑、迸發的靈性火花都是咱們成長路上寶貴的東西
後面仍是會不按期更新一些面試題或者有意思的東西,分享給有須要的小夥伴
最後,推薦一波 GitHub完整版面試題 歡迎小夥伴們 star
關注
以上