13.1. 微信小程序的優(yōu)劣勢?
優(yōu)勢:
1. 無需下載,通過搜索和掃一掃就可以打開。2. 良好的用戶體驗(yàn):打開速度快。3. 開發(fā)成本要比App要低。4. 安卓上可以添加到桌面,與原生App差不多。5. 為用戶提供良好的安全保障。小程序的發(fā)布,微信擁有一套嚴(yán)格的審查流程,不能通過審查的小程序是無法發(fā)布到線上的。
劣勢:
1. 限制較多。頁面大小不能超過2M。不能打開超過5個層級的頁面。2. 樣式單一。小程序的部分組件已經(jīng)是成型的了,樣式不可以修改。例如:幻燈片、導(dǎo)航。3. 推廣面窄,不能分享朋友圈,只能通過分享給朋友,附近小程序推廣。其中附近小程序也受到微信的限制。4. 依托于微信,無法開發(fā)后臺管理功能。13.2. 微信小程序與H5的區(qū)別?1. 運(yùn)行環(huán)境的不同
傳統(tǒng)的HTML5的運(yùn)行環(huán)境是瀏覽器,包括,而微信小程序的運(yùn)行環(huán)境并非完整的瀏覽器,是微信開發(fā)團(tuán)隊(duì)基于瀏覽器內(nèi)核完全重構(gòu)的一個內(nèi)置解析器,針對小程序?qū)iT做了優(yōu)化,配合自己定義的開發(fā)語言標(biāo)準(zhǔn),提升了小程序的性能。
2. 開發(fā)成本的不同
只在微信中運(yùn)行,所以不用再去顧慮瀏覽器兼容性,不用擔(dān)心生產(chǎn)環(huán)境中出現(xiàn)不可預(yù)料的奇妙BUG
1.3. 獲取系統(tǒng)級權(quán)限的不同
13.3. 微信小程序與Vue區(qū)別1. 生命周期不一樣,微信小程序生命周期比較簡單2. 數(shù)據(jù)綁定也不同,微信小程序數(shù)據(jù)綁定需要使用{{}},Vue 直接:就可以 顯示與隱藏元素,Vue中,使用 v-if和 v-show3. 控制元素的顯示和隱藏,小程序中,使用wx:if和 控制元素的顯示和隱藏4. 事件處理不同,小程序中,全用 (bind+event),或者(catch+event)綁定事件,Vue:使用v-on:event 綁定事件,或者使用@event綁定事件5. 數(shù)據(jù)綁定不一樣,在 Vue中只需要再表單元素上加上 v-model,然后再綁定 data中對應(yīng)的一個值,當(dāng)表單元素內(nèi)容發(fā)生變化時,data中對應(yīng)的值也會相應(yīng)改變小程序圖片懶加載,這是 Vue非常 nice 的一點(diǎn)。微信小程序必須獲取到表單元素,改變的值,然后再把值賦給一個 data中聲明的變量。13.4. 小程序的 wxss 和 css 有哪些不一樣的地方?1. wxss的圖片引入需使用外鏈地址2. 沒有Body;樣式可直接使用 導(dǎo)入13.5. 簡述微信小程序原理1. 微信小程序采用 、WXML、WXSS 三種技術(shù)進(jìn)行開發(fā),本質(zhì)就是一個單頁面應(yīng)用,所有的頁面渲染和事件處理,都在一個頁面內(nèi)進(jìn)行,但又可以通過微信客戶端調(diào)用原生的各種接口2. 微信小程序的架構(gòu),是數(shù)據(jù)驅(qū)動的架構(gòu)模式,它的 UI 和數(shù)據(jù)是分離的,所有的頁面更新,都需要通過對數(shù)據(jù)的更改來實(shí)現(xiàn)3. 小程序分為兩個部分 和 。
其中 主要用來展現(xiàn)UI , 有來處理業(yè)務(wù)邏輯、數(shù)據(jù)及接口調(diào)用。它們在兩個進(jìn)程中運(yùn)行,通過系統(tǒng)層 實(shí)現(xiàn)通信,實(shí)現(xiàn) UI 的渲染、事件的處理13.6. 小程序的生命周期函數(shù)1. 頁面加載時觸發(fā)。一個頁面只會調(diào)用一次,可以在 的參數(shù)中獲取打開當(dāng)前頁面路徑中的參數(shù)2. () 頁面顯示/切入前臺時觸發(fā)3. () 頁面初次渲染完成時觸發(fā)。一個頁面只會調(diào)用一次,代表頁面已經(jīng)準(zhǔn)備妥當(dāng),可以和視圖層進(jìn)行交互4. () 頁面隱藏/切入后臺時觸發(fā)。 如 或底部 tab 切換到其他頁面,小程序切入后臺等5. () 頁面卸載時觸發(fā)。如 或 到其他頁面時13.7. 哪些方法可以用來提高微信小程序的應(yīng)用速度
1. 提高頁面加載速度
2. 用戶行為預(yù)測
3. 減少默認(rèn) data 的大小
4. 組件化方案
13.8. 怎么解決小程序的異步請求問題1)小程序支持大部分 ES6 語法2)在返回成功的回調(diào)里面處理邏輯異步13.9. 如何實(shí)現(xiàn)下拉刷新
1. 首先在全局 中的 配置 h
2. 在 Page 中定義 鉤子函數(shù),到達(dá)下拉刷新條件后, 該鉤子函數(shù)執(zhí)行, 發(fā)起請求方法
3. 請求返回后,調(diào)用wx.停止下拉刷新
13.10. 和的區(qū)別是什么
1. 相同點(diǎn):首先他們都是作為點(diǎn)擊事件函數(shù),就是點(diǎn)擊時觸發(fā)。在這個作用上他們是一樣的,可以不做區(qū)分
2. 不同點(diǎn):他們的不同點(diǎn)主要是是不會阻止冒泡事件的,是阻值冒泡的
13.11. 小程序頁面間有哪些傳遞數(shù)據(jù)的方法1. 使用全局變量實(shí)現(xiàn)數(shù)據(jù)傳遞。在 app.js 文件中定義全局變量 , 將需要存儲的信息存放在里面2. 使用 wx.與 wx. 的時候,可以將部分?jǐn)?shù)據(jù)放在 url 里面,并在新頁面的時候初始化3. 使用本地緩存 相關(guān)13.12. 小程序wxml與標(biāo)準(zhǔn)的html的異同?
相同:
1. 都是用來描述頁面的結(jié)構(gòu);2. 都由標(biāo)簽、屬性等構(gòu)成;
不同:
1. 標(biāo)簽名字不一樣,且小程序標(biāo)簽更少,單一標(biāo)簽更多;2. 多了一些wx:if 這樣的屬性以及 {{ }}這樣的表達(dá)式3. WXML僅能在微信小程序開發(fā)者工具中預(yù)覽,而HTML可以在瀏覽器內(nèi)預(yù)覽;4. 組件封裝不同, WXML對組件進(jìn)行了重新封裝,5. 小程序運(yùn)行在JS Core內(nèi),沒有DOM樹和對象,小程序中無法使用對象和對象。13.13. 小程序簡單介紹下三種事件對象的屬性列表?
1. 基礎(chǔ)事件()
1) type:事件類型
2) :事件生成時的時間戳
3) :觸發(fā)事件的組件的屬性值集合
4) :當(dāng)前組件的一些屬性集合
2. 自定義事件()
1)
3. 觸摸事件()
1)
2)
13.14. 小程序?qū)x:if 和 使用的理解?1. wx:if有更高的切換消耗。2. 有更高的初始渲染消耗。
因此,如果需要頻繁切換的情景下,用 更好,如果在運(yùn)行時條件不大可能改變則wx:if 較好。
13.15. app.json 是對當(dāng)前小程序的全局配置,講述三個配置各個項(xiàng)的含義?1. pages字段 —— 用于描述當(dāng)前小程序所有頁面路徑,這是為了讓微信客戶端知道當(dāng)前你的小程序頁面定義在哪個目錄。2. 字段 —— 小程序所有頁面的頂部背景顏色,文字顏色定義在這里的3. tab字段—小程序全局頂部或底部tab13.16. 小程序方法的使用注意什么?
由于此方法調(diào)用頻繁,不需要時,可以去掉,不要保留空方法,并且使用時,盡量避免使用(),盡量減少()的使用頻次。
13.17. 小程序視圖渲染結(jié)束回調(diào)?
使用(data, ),在回調(diào)方法中添加后續(xù)操作代碼
13.18. 小程序同步API和異步API使用時注意事項(xiàng)?
wx.是以Sync結(jié)尾的API為同步API,使用時使用try-catch來查看異常,如果判定API為異步,可以在其回調(diào)方法、fail、中進(jìn)行下一步操作。
13.19. 簡述下 wx.(), wx.(), wx.(), wx.(), wx.()的區(qū)別1. wx.():保留當(dāng)前頁面,跳轉(zhuǎn)到應(yīng)用內(nèi)的某個頁面。但是不能跳到 頁面2. wx.():關(guān)閉當(dāng)前頁面,跳轉(zhuǎn)到應(yīng)用內(nèi)的某個頁面。但是不允許跳轉(zhuǎn)到 頁面3. wx.():跳轉(zhuǎn)到 abBar 頁面,并關(guān)閉其他所有非 頁面4. wx.():關(guān)閉當(dāng)前頁面,返回上一頁面或多級頁面。可通過() 獲取當(dāng)前的頁面棧,決定需要返回幾層5. wx.():關(guān)閉所有頁面,打開到應(yīng)用內(nèi)的某個頁面13.20. 如何封裝微信小程序的數(shù)據(jù)請求的?
1. 將所有的接口放在統(tǒng)一的js文件中并導(dǎo)出。
2. 在app.js中創(chuàng)建封裝請求數(shù)據(jù)的方法。
3. 在子頁面中調(diào)用封裝的方法請求數(shù)據(jù)。
13.21. 中的頁面怎么跳回小程序中?
首先要引入最新版的-x.x.x.js,然后
wx.miniProgram.navigateTo({ url: '/pages/login/login'+'$params' })
13.22. 小程序關(guān)聯(lián)微信公眾號如何確定用戶的唯一性?
使用wx.方法為 true時 可獲取,里面有。后端需要進(jìn)行對稱解密。
13.23. 小程序調(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)簽讓插件來做小程序圖片懶加載,減輕前端的時間。
13.24. 的頁面怎么跳轉(zhuǎn)到小程序?qū)Ш?/a>的頁面?
1. 小程序?qū)Ш降捻撁婵梢酝ㄟ^,但默認(rèn)情況是不會重新加載數(shù)據(jù)的。若需加載新數(shù)據(jù),則在屬性中加入以下代碼即可:
success: function (e) { var page = getCurrentPages().pop(); if (page == undefined || page == null) return; page.onLoad(); }
2. 的頁面,則通過
wx.miniProgram.switchTab({ url: '/pages/index/index' })
13.25. 小程序?yàn)槭裁匆职绾螌?shí)現(xiàn)分包
1. 為什么分包: 分包可以避免小程序2M限制,進(jìn)行頁面懶加載提高渲染效率
2. 分包實(shí)現(xiàn):
1) 常規(guī)分包: 開發(fā)者通過在 app.字段聲明項(xiàng)目分包結(jié)構(gòu), ‘root’為分包的根目錄名稱,‘pages’分包頁面路徑,相對于分包根路徑
2) 獨(dú)立分包: 設(shè)置為true,獨(dú)立分包可不用依賴于主包,可單獨(dú)下載,但不能依賴主包資源
3) 分包預(yù)下載:
13.26. 小程序獲取流程1. wx.login()
13.27. 小程序頁面通信方式1. 路由傳參1)傳參方式a)路由地址中 + query傳參數(shù)b)示例: url?a=1232)獲取參數(shù)a)跳轉(zhuǎn)目標(biāo)頁面的函數(shù)中的實(shí)參中獲取
2. 消息訂閱發(fā)布1. 使用第三方庫: -js2. 安裝: npm -js3. 使用:1) from ‘-js’2)訂閱消息: .(‘’, )3)發(fā)布消息: .(‘’, data)4)取消訂閱: .(‘’)3. 事件通道1. 訂閱事件a)wx.()跳轉(zhuǎn)的時候在選項(xiàng)中定義事件名及事件對應(yīng)的回調(diào)
3. 觸發(fā)事件