1恕出、微信小程序有幾個文件
-
WXML(WeiXin Markup Language)
是框架設(shè)計的一套標(biāo)簽語言,結(jié)合基礎(chǔ)組件、事件系統(tǒng)芜辕,可以構(gòu)建出頁面的結(jié)構(gòu)。內(nèi)部主要是微信自己定義的一套組件 -
WXSS (WeiXin Style Sheets)
是一套樣式語言活孩,用于描述WXML
的組件樣式 -
js
邏輯處理物遇,網(wǎng)絡(luò)請求 -
json
小程序設(shè)置乖仇,如頁面注冊,頁面標(biāo)題及tabBar
2询兴、微信小程序怎樣跟事件傳值
給 HTML 元素添加
data-*
屬性來傳遞我們需要的值乃沙,然后通過e.currentTarget.dataset
或onload
的param
參數(shù)獲取。但data -
名稱不能有大寫字母和不可以存放對象
3诗舰、小程序的 wxss 和 css 有哪些不一樣的地方警儒?
-
wxss
的圖片引入需使用外鏈地址 -
沒有 Body
;樣式可直接使用import
導(dǎo)入
4眶根、小程序關(guān)聯(lián)微信公眾號如何確定用戶的唯一性
使用 wx.getUserInfo
方法 withCredentials
為 true
時 可獲取 <encryptedData
蜀铲,里面有 union_id
。后端需要進(jìn)行對稱解密
5属百、微信小程序與vue區(qū)別
- 生命周期不一樣记劝,微信小程序生命周期比較簡單
- 數(shù)據(jù)綁定也不同,微信小程序數(shù)據(jù)綁定需要使用
{{}}族扰,vue
直接:就可以 顯示與隱藏元素厌丑,vue
中,使用v-if
和v-show
- 控制元素的顯示和隱藏渔呵,小程序中怒竿,使用
wx-if
和hidden
控制元素的顯示和隱藏 - 事件處理不同,小程序中扩氢,全用
bindtap(bind+event)
耕驰,或者catchtap(catch+event)
綁定事件,vue:使用v-on:event
綁定事件,或者使用@event
綁定事件 - 數(shù)據(jù)雙向綁定也不也不一樣在
vue
中,只需要再表單元素上加上v-model
,然后再綁定data
中對應(yīng)的一個值录豺,當(dāng)表單元素內(nèi)容發(fā)生變化時朦肘,data
中對應(yīng)的值也會相應(yīng)改變,這是vue
非常nice
的一點双饥。微信小程序必須獲取到表單元素厚骗,改變的值,然后再把值賦給一個data
中聲明的變量兢哭。
6领舰、小程序的雙向綁定和vue哪里不一樣
小程序直接 this.data
屬性是不可以同步到視圖的,必須調(diào)用:
this.setData({
// 這里設(shè)置
})
7迟螺、簡述微信小程序原理
- 微信小程序采用
JavaScript冲秽、WXML、WXSS
三種技術(shù)進(jìn)行開發(fā),本質(zhì)就是一個單頁面應(yīng)用矩父,所有的頁面渲染和事件處理锉桑,都在一個頁面內(nèi)進(jìn)行,但又可以通過微信客戶端調(diào)用原生的各種接口 - 微信的架構(gòu)窍株,是數(shù)據(jù)驅(qū)動的架構(gòu)模式民轴,它的
UI
和數(shù)據(jù)是分離的攻柠,所有的頁面更新,都需要通過對數(shù)據(jù)的更改來實現(xiàn) - 小程序分為兩個部分
webview
和appService
后裸。其中webview
主要用來展現(xiàn)UI 瑰钮,appService
有來處理業(yè)務(wù)邏輯、數(shù)據(jù)及接口調(diào)用微驶。它們在兩個進(jìn)程中運行浪谴,通過系統(tǒng)層JSBridge
實現(xiàn)通信,實現(xiàn) UI 的渲染因苹、事件的處理
8苟耻、小程序的生命周期函數(shù)
-
onLoad
頁面加載時觸發(fā)。一個頁面只會調(diào)用一次扶檐,可以在onLoad
的參數(shù)中獲取打開當(dāng)前頁面路徑中的參數(shù) -
onShow()
頁面顯示/切入前臺時觸發(fā) -
onReady()
頁面初次渲染完成時觸發(fā)凶杖。一個頁面只會調(diào)用一次,代表頁面已經(jīng)準(zhǔn)備妥當(dāng)款筑,可以和視圖層進(jìn)行交互 -
onHide()
頁面隱藏/切入后臺時觸發(fā)官卡。 如navigateTo
或底部tab
切換到其他頁面,小程序切入后臺等 -
onUnload()
頁面卸載時觸發(fā)醋虏。如redirectTo 或 navigateBack
到其他頁面時
9、哪些方法可以用來提高微信小程序的應(yīng)用速度
1哮翘、提高頁面加載速度
2颈嚼、用戶行為預(yù)測
3、減少默認(rèn) data
的大小
4饭寺、組件化方案
10阻课、怎么解決小程序的異步請求問題
- 小程序支持大部分
ES6
語法 - 在返回成功的回調(diào)里面處理邏輯
Promise
異步
11、如何實現(xiàn)下拉刷新
首先在全局 config
中的 window
配置 enablePullDownRefresh
艰匙,在 Page
中定義onPullDownRefresh
鉤子函數(shù),到達(dá)下拉刷新條件后限煞,該鉤子函數(shù)執(zhí)行,發(fā)起請求方法 請求返回后员凝,調(diào)用wx.stopPullDownRefresh
停止下拉刷新
12署驻、bindtap和catchtap的區(qū)別是什么
相同:
首先他們都是作為點擊事件函數(shù),就是點擊時觸發(fā)健霹。在這個作用上他們是一樣的旺上,可以不做區(qū)分
不同:
他們的不同點主要是bindtap
是不會阻止冒泡事件的,catchtap
是阻值冒泡的
13糖埋、小程序頁面間有哪些傳遞數(shù)據(jù)的方法
1宣吱、使用全局變量實現(xiàn)數(shù)據(jù)傳遞。在 app.js
文件中定義全局變量 globalData
瞳别, 將需要存儲的信息存放在里面
2征候、使用 wx.navigateTo
與 wx.redirectTo
的時候杭攻,可以將部分?jǐn)?shù)據(jù)放在 url
里面,并在新頁面onLoad
的時候初始化
3疤坝、使用本地緩存Storage
相關(guān)
14兆解、小程序wxml與標(biāo)準(zhǔn)的html的異同?
相同:
- 都是用來描述頁面的結(jié)構(gòu)卒煞;
- 都由標(biāo)簽痪宰、屬性等構(gòu)成;
不同:
- 標(biāo)簽名字不一樣畔裕,且小程序標(biāo)簽更少衣撬,單一標(biāo)簽更多;
- 多了一些
wx:if
這樣的屬性以及{{ }}
這樣的表達(dá)式 - WXML僅能在微信小程序開發(fā)者工具中預(yù)覽扮饶,而
HTML
可以在瀏覽器內(nèi)預(yù)覽具练; - 組件封裝不同,
WXML
對組件進(jìn)行了重新封裝甜无, - 小程序運行在
JS Core
內(nèi)扛点,沒有DOM樹
和window
對象,小程序中無法使用window
對象和document
對象岂丘。
15陵究、小程序簡單介紹下三種事件對象的屬性列表?
基礎(chǔ)事件(BaseEvent)
-
type:
事件類型 -
timeStamp:
事件生成時的時間戳 -
target:
觸發(fā)事件的組件的屬性值集合 -
currentTarget:
當(dāng)前組件的一些屬性集合
自定義事件(CustomEvent)
detail
觸摸事件(TouchEvent)
touches
changedTouches
16奥帘、小程序?qū)x:if 和 hidden使用的理解铜邮?
-
wx:if
有更高的切換消耗。 -
hidden
有更高的初始渲染消耗寨蹋。 - 因此松蒜,如果需要頻繁切換的情景下,用
hidden
更好已旧,如果在運行時條件不大可能改變則wx:if
較好秸苗。
17、微信小程序與H5的區(qū)別运褪?
運行環(huán)境的不同
傳統(tǒng)的HTML5
的運行環(huán)境是瀏覽器惊楼,包括webview
,而微信小程序的運行環(huán)境并非完整的瀏覽器秸讹,是微信開發(fā)團隊基于瀏覽器內(nèi)核完全重構(gòu)的一個內(nèi)置解析器胁后,針對小程序?qū)iT做了優(yōu)化,配合自己定義的開發(fā)語言標(biāo)準(zhǔn)嗦枢,提升了小程序的性能攀芯。開發(fā)成本的不同
只在微信中運行,所以不用再去顧慮瀏覽器兼容性文虏,不用擔(dān)心生產(chǎn)環(huán)境中出現(xiàn)不可預(yù)料的奇妙BUG
獲取系統(tǒng)級權(quán)限的不同
18侣诺、app.json 是對當(dāng)前小程序的全局配置殖演,講述三個配置各個項的含義?
-
pages字段
—— 用于描述當(dāng)前小程序所有頁面路徑年鸳,這是為了讓微信客戶端知道當(dāng)前你的小程序頁面定義在哪個目錄趴久。 -
window字段
—— 小程序所有頁面的頂部背景顏色,文字顏色定義在這里的 -
tab字段
—小程序全局頂部或底部tab
19搔确、小程序onPageScroll方法的使用注意什么彼棍?
由于此方法調(diào)用頻繁,不需要時膳算,可以去掉座硕,不要保留空方法,并且使用onPageScroll
時涕蜂,盡量避免使用setData()
华匾,盡量減少setData()
的使用頻次。
20机隙、小程序視圖渲染結(jié)束回調(diào)蜘拉?
使用setData(data, callback)
,在callback
回調(diào)方法中添加后續(xù)操作代碼
21有鹿、小程序同步API和異步API使用時注意事項旭旭?
wx.setStorageSync
是以Sync結(jié)尾的API為同步API,使用時使用try-catch
來查看異常葱跋,如果判定API為異步持寄,可以在其回調(diào)方法success、fail年局、complete
中進(jìn)行下一步操作。
22咸产、簡述下 wx.navigateTo(), wx.redirectTo(), wx.switchTab(), wx.navigateBack(), wx.reLaunch()
的區(qū)別
-
wx.navigateTo():
保留當(dāng)前頁面矢否,跳轉(zhuǎn)到應(yīng)用內(nèi)的某個頁面。但是不能跳到tabbar
頁面 -
wx.redirectTo():
關(guān)閉當(dāng)前頁面脑溢,跳轉(zhuǎn)到應(yīng)用內(nèi)的某個頁面僵朗。但是不允許跳轉(zhuǎn)到tabbar
頁面 -
wx.switchTab():
跳轉(zhuǎn)到abBar
頁面,并關(guān)閉其他所有非tabBar
頁面 -
wx.navigateBack():
關(guān)閉當(dāng)前頁面屑彻,返回上一頁面或多級頁面验庙。可通過getCurrentPages()
獲取當(dāng)前的頁面棧社牲,決定需要返回幾層 -
wx.reLaunch():
關(guān)閉所有頁面粪薛,打開到應(yīng)用內(nèi)的某個頁面
23、如何封裝微信小程序的數(shù)據(jù)請求的搏恤?
1违寿、將所有的接口放在統(tǒng)一的js文件中并導(dǎo)出湃交。
2、在app.js
中創(chuàng)建封裝請求數(shù)據(jù)的方法藤巢。
3搞莺、在子頁面中調(diào)用封裝的方法請求數(shù)據(jù)。
24掂咒、小程序與原生App哪個好才沧?
小程序除了擁有公眾號的低開發(fā)成本、低獲客成本低以及無需下載等優(yōu)勢绍刮,在服務(wù)請求延時與用戶使用體驗是都得到了較大幅度 的提升温圆,使得其能夠承載跟復(fù)雜的服務(wù)功能以及使用戶獲得更好的用戶體驗。
25录淡、webview
中的頁面怎么跳回小程序中捌木?
首先要引入最新版的jweixin-x.x.x.js
,然后
wx.miniProgram.navigateTo({
url: '/pages/login/login'+'$params'
})
26嫉戚、小程序調(diào)用后臺接口遇到哪些問題刨裆?
1.數(shù)據(jù)的大小有限制,超過范圍會直接導(dǎo)致整個小程序崩潰彬檀,除非重啟小程序帆啃;
2.小程序不可以直接渲染文章內(nèi)容頁這類型的html
文本內(nèi)容,若需顯示要借住插件窍帝,但插件渲染會導(dǎo)致頁面加載變慢努潘,所以最好在后臺對文章內(nèi)容的html
進(jìn)行過濾,后臺直接處理批量替換p
標(biāo)簽div
標(biāo)簽為view
標(biāo)簽坤学,然后其它的標(biāo)簽讓插件來做疯坤,減輕前端的時間。
27深浮、webview的頁面怎么跳轉(zhuǎn)到小程序?qū)Ш降捻撁妫?/h2>
答:小程序?qū)Ш降捻撁婵梢酝ㄟ^switchTab
压怠,但默認(rèn)情況是不會重新加載數(shù)據(jù)的。若需加載新數(shù)據(jù)飞苇,則在success
屬性中加入以下代碼即可:
success: function (e) {
var page = getCurrentPages().pop();
if (page == undefined || page == null) return;
page.onLoad();
}
webview
的頁面菌瘫,則通過
wx.miniProgram.switchTab({
url: '/pages/index/index'
})
28、微信小程序的優(yōu)劣勢布卡?
優(yōu)勢:
1雨让、無需下載,通過搜索和掃一掃就可以打開忿等。
2栖忠、良好的用戶體驗:打開速度快。
3、開發(fā)成本要比App要低娃闲。
4虚汛、安卓上可以添加到桌面,與原生App差不多皇帮。
5卷哩、為用戶提供良好的安全保障。小程序的發(fā)布属拾,微信擁有一套嚴(yán)格的審查流程将谊,不能通過審查的小程序是無法發(fā)布到線上的。
劣勢:
1渐白、限制較多尊浓。頁面大小不能超過1M。不能打開超過5個層級的頁面纯衍。
2栋齿、樣式單一。小程序的部分組件已經(jīng)是成型的了襟诸,樣式不可以修改瓦堵。例如:幻燈片、導(dǎo)航歌亲。
3菇用、推廣面窄,不能分享朋友圈陷揪,只能通過分享給朋友惋鸥,附近小程序推廣。其中附近小程序也受到微信的限制悍缠。
4卦绣、依托于微信,無法開發(fā)后臺管理功能飞蚓。
參考資料:csdn