微信小程序開發問答《七十九》不(bù)能使用session如何解決 & 小程序處理JS很慢 ... - 新聞資訊 - 雲南小程序開發|雲南軟件開發|雲南網站建設-昆明融晨信息技術有限公司

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不(bù)管是(shì)網站,軟件還是(shì)小程序,都要(yào / yāo)直接或間接能爲(wéi / wèi)您産生價值,我們在(zài)追求其視覺表現的(de)同時(shí),更側重于(yú)功能的(de)便捷,營銷的(de)便利,運營的(de)高效,讓網站成爲(wéi / wèi)營銷工具,讓軟件能切實提升企業内部管理水平和(hé / huò)效率。優秀的(de)程序爲(wéi / wèi)後期升級提供便捷的(de)支持!

您當前位置>首頁 » 新聞資訊 » 小程序相關 >

微信小程序開發問答《七十九》不(bù)能使用session如何解決 & 小程序處理JS很慢 ...

發表時(shí)間:2021-3-31

發布人(rén):融晨科技

浏覽次數:76

1、微信小程序請求不(bù)能使用session如何解決?

A:本人(rén)在(zài)前面的(de)微信小程序開發《二》中提到(dào)要(yào / yāo)想在(zài)服務端保持狀态需要(yào / yāo)在(zài)客戶端第一次請求服務器的(de)時(shí)候給客戶端返回一個(gè)sessionid,由客戶端在(zài)本地(dì / de)保存,下次請求的(de)時(shí)候在(zài)header裏面帶上(shàng)這(zhè)個(gè)sessionid,寫到(dào)cookie字段裏。但是(shì)最近發現請求時(shí)哪怕每次在(zài)header裏帶上(shàng)sessionid還是(shì)不(bù)能拿到(dào)同一個(gè)session,百度後終于(yú)發現坑了(le/liǎo)(也(yě)不(bù)知道(dào)微信爲(wéi / wèi)啥要(yào / yāo)這(zhè)麽做),原來(lái)微信對wx.request這(zhè)個(gè)API做了(le/liǎo)修改,小程序發起的(de)請求并不(bù)是(shì)直接請求我們的(de)後台服務器,而(ér)是(shì)先通過微信的(de)服務器再發送到(dào)我們的(de)後台服務器,既然請求都是(shì)要(yào / yāo)通過微信的(de)服務器發送到(dào)我們的(de)服務器,那麽我們的(de)服務器也(yě)就(jiù)無從識别請求的(de)發起者了(le/liǎo)。因此,session在(zài)微信小程序的(de)後台開發中是(shì)無法使用的(de)。 
既然session無法使用,對于(yú)本人(rén)這(zhè)種web的(de)後端程序猿該如何是(shì)好,隻能用别的(de)方式來(lái)代替了(le/liǎo)哦。我用了(le/liǎo)redis來(lái)代替session的(de)功能,當客戶端發送請求到(dào)後台服務器時(shí),生成一個(gè)随機字符串作爲(wéi / wèi)key,原本要(yào / yāo)放入session的(de)内容,一般是(shì)用戶信息作爲(wéi / wèi)value存入redis中,然後将key返回給客戶端,客戶端将key存在(zài)本地(dì / de)的(de)storage,在(zài)下次請求的(de)時(shí)候以(yǐ)參數據形式将key帶上(shàng),這(zhè)樣當後端服務器接收到(dào)key時(shí)便可以(yǐ)從redis中查找該key對應的(de)value,從而(ér)實現了(le/liǎo)替代session的(de)效果,redis還可以(yǐ)設置key失效的(de)時(shí)間。

2、微信小程序報錯: Cannot read property '0' of undefined

A:今天遇到(dào)了(le/liǎo)一個(gè)bug:

  1. VM4735:2 Uncaught TypeError: Cannot read property '0' of undefined

查了(le/liǎo)很久發現是(shì)三目運算寫錯了(le/liǎo),這(zhè)種低級錯誤容易犯,而(ér)且又很難發現。

最後是(shì)一段一段注釋掉,用排除法來(lái)縮小範圍來(lái)找到(dào)的(de)。直接看代碼很難發現。

  1. <view>{{param:1:2}}</view>

to

  1. <view>{{param?1:2}}</view>

3、小程序裏面不(bù)支持document或window語法,那請問這(zhè)裏要(yào / yāo)用什麽方式來(lái)代替? 


A:由于(yú)框架并非運行在(zài)浏覽器中,所以(yǐ) JavaScript 在(zài) web 中一些能力都無法使用,如 document,window 等。 
https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-react.html

https://mp.weixin.qq.com/debug/wxadoc/dev/framework/view/wxml/data.html


4、爲(wéi / wèi)啥小程序處理JS很慢很慢 ?

我在(zài)網頁上(shàng)跑 這(zhè)一段代碼一兩秒就(jiù)可以(yǐ)了(le/liǎo),在(zài)小程序上(shàng)跑了(le/liǎo)10秒左右,這(zhè)段代碼有130行左右,一直循環匹配,太耗性能了(le/liǎo)吧,在(zài)網頁上(shàng)還好。小程序裏太慢了(le/liǎo)!

A:看樣子(zǐ)應該是(shì)你數據量太大(dà)了(le/liǎo),調用setData之(zhī)後覺得卡頓,建議不(bù)要(yào / yāo)用setData傳輸太大(dà)的(de)數據(可以(yǐ)分塊傳輸) https://mp.weixin.qq.com/debug/wxadoc/dev/framework/performance/tips.html

相關案例查看更多