微信小程序部分功能踩坑指南

前言

開發(fā)項(xiàng)目時屹篓,實(shí)際遇到的一些功能需求和問題匯總。列出了當(dāng)時參考的一些文章和官方文檔。
開發(fā)框架:mpvue
官方文檔:5分鐘快速上手

小程序跳轉(zhuǎn)外鏈

參考文章:小程序跳轉(zhuǎn)到非小程序頁面的外部鏈接地址

  1. 要跳轉(zhuǎn)的鏈接必須是https的
  2. 需要用web-view組件丹弱,web-view組件是一個可以用來承載網(wǎng)頁的容器烂叔,會自動鋪滿整個小程序頁面谨胞。(個人類型與海外類型的小程序暫不支持使用。也就是說個人申請的小程序蒜鸡,就別想跳轉(zhuǎn)了)
  3. 需要在小程序后臺配置業(yè)務(wù)域名胯努,也就是你要跳轉(zhuǎn)網(wǎng)頁地址的域名。(設(shè)置-開發(fā)設(shè)置 -業(yè)務(wù)域名)
  4. 配置業(yè)務(wù)域名時逢防,會要求下載校驗(yàn)文件叶沛,該文件需要放置到訪問外鏈地址的根目錄下,可能會需要運(yùn)維協(xié)助
  5. 跳轉(zhuǎn)外鏈后忘朝,如果打開的二級頁中有新的域名地址灰署,同樣需要重復(fù)上述步驟

小程序內(nèi)部頁面跳轉(zhuǎn)

官方文檔:小程序頁面跳轉(zhuǎn)

低版本兼容

為便于開發(fā)者解決低版本基礎(chǔ)庫無法兼容小程序的新功能的問題,開發(fā)者可設(shè)置小程序最低基礎(chǔ)庫版本要求。

開發(fā)者可以登錄小程序管理后臺溉箕,進(jìn)入「設(shè)置 - 基本設(shè)置 - 基礎(chǔ)庫最低版本設(shè)置」進(jìn)行配置晦墙。在配置前,開發(fā)者可查看近 30 天內(nèi)訪問當(dāng)前小程序的用戶所使用的基礎(chǔ)庫版本占比肴茄,以幫助開發(fā)者了解當(dāng)前用戶使用的情況晌畅。

官方文檔:低版本兼容處理

微信小程序 基礎(chǔ)庫版本與客戶端版本對應(yīng)關(guān)系

小程序iphonex適配

參考文章:微信小程序API之設(shè)備獲取系統(tǒng)信息getSystemInfo

參考文章:微信小程序適配iphoneX

mpvue支持less

參考文章:2步配置mpvue支持less

小程序生命周期

參考文章:小程序生命周期

官方文檔:mpvue的生命周期

坑點(diǎn):右上角按鈕只是把小程序退到了后臺,并沒有關(guān)閉小程序独郎,所以如果未做處理踩麦,下次進(jìn)去還是上一次退出前的狀態(tài)。不會像h5一樣刷新打開頁面氓癌。也沒有開放銷毀小程序的監(jiān)聽谓谦。
前臺、后臺定義: 當(dāng)用戶點(diǎn)擊左上角關(guān)閉贪婉,或者按了設(shè)備 Home 鍵離開微信反粥,小程序并沒有直接銷毀,而是進(jìn)入了后臺疲迂;當(dāng)再次進(jìn)入微信或再次打開小程序才顿,又會從后臺進(jìn)入前臺。

swiper 間距輪播

參考文章:微信小程序使用swiper組件實(shí)現(xiàn)類3D輪播圖

參考文章:小程序swiper組件實(shí)現(xiàn)不同效果間距輪播

最后用的第二篇里面的方法三尤蒿,需要用到Animation動畫對象
第一篇文章里直接用css的transition郑气,動畫不流暢。

小程序swiper組件bug:

參考文章:微信小程序swiper組件卡死來回瘋狂輪播

小程序引入外部字體

參考文章:小程序如何引入外部字體
用過里面的方法二

圖片預(yù)覽

只有圖片全屏預(yù)覽后腰池,才能通過長按圖片吊起菜單欄(保存圖片尾组,分享圖片,收藏圖片)

參考文章:圖片預(yù)覽

保存圖片到相冊

小程序保存圖片到本地授權(quán)問題

// 保存圖片
export function saveImg (imgurl) {
  wx.showLoading({
    title: '圖片保存中...'
  })
  wx.downloadFile({
    url: imgurl,
    success: function (res) {
      // 圖片保存到本地
      wx.saveImageToPhotosAlbum({
        filePath: res.tempFilePath,
        success: function (data) {
          wx.hideLoading()
          wx.showModal({
            title: '圖片已存入相冊',
            content: '好東西要分享示弓,發(fā)給朋友們看看讳侨。',
            showCancel: false
          })
        },
        fail: function (err) {
          console.log(err)
          if (err.errMsg === 'saveImageToPhotosAlbum:fail:auth denied' || err.errMsg === 'saveImageToPhotosAlbum:fail auth deny' || err.errMsg === 'saveImageToPhotosAlbum:fail authorize no response') {
            // 這邊微信做過調(diào)整,必須要在按鈕中觸發(fā)奏属,因此需要在彈框回調(diào)中進(jìn)行調(diào)用
            wx.showModal({
              title: '提示',
              content: '需要您授權(quán)保存相冊',
              showCancel: false,
              success: modalSuccess => {
                wx.openSetting({
                  success (settingdata) {
                    console.log('settingdata', settingdata)
                    if (settingdata.authSetting['scope.writePhotosAlbum']) {
                      wx.showModal({
                        title: '提示',
                        content: '獲取權(quán)限成功,再次點(diǎn)擊按鈕即可保存',
                        showCancel: false
                      })
                    } else {
                      wx.showModal({
                        title: '提示',
                        content: '獲取權(quán)限失敗跨跨,將無法保存到相冊!',
                        showCancel: false
                      })
                    }
                  },
                  fail (failData) {
                    console.log('failData', failData)
                  },
                  complete (finishData) {
                    console.log('finishData', finishData)
                  }
                })
              }
            })
          }
        },
        complete (res) {
          wx.hideLoading()
        }
      })
    }
  })
}

轉(zhuǎn)發(fā)小程序

1. 顯示轉(zhuǎn)發(fā)按鈕

wx.showShareMenu(Object object)

  mounted () {
    wx.showShareMenu({
      withShareTicket: true
    })
  },
2. 自定義轉(zhuǎn)發(fā)的標(biāo)題囱皿、圖片

onShareAppMessage(Object)
監(jiān)聽用戶點(diǎn)擊頁面內(nèi)轉(zhuǎn)發(fā)按鈕(<button> 組件 open-type="share")或右上角菜單“轉(zhuǎn)發(fā)”按鈕的行為勇婴,并自定義轉(zhuǎn)發(fā)內(nèi)容。

官網(wǎng)文檔:onShareAppMessage(Object)

mpvue中與mounted寫的位置類似

  onShareAppMessage: function (options) {
    return sharehanle(options)
  },

處理設(shè)置菜單分享和按鈕分享的自定義標(biāo)題嘱腥、圖片等咆耿。

export function sharehanle (options) {
  // var that = this
  // 設(shè)置菜單中的轉(zhuǎn)發(fā)按鈕觸發(fā)轉(zhuǎn)發(fā)事件時的轉(zhuǎn)發(fā)內(nèi)容
  console.log(options)
  var shareObj = {
    title: '分享標(biāo)題', // 默認(rèn)是小程序的名稱(可以寫slogan等)
    path: '/pages/index/main', // 默認(rèn)是當(dāng)前頁面,必須是以‘/’開頭的完整路徑
    imageUrl: '', // 自定義圖片路徑爹橱,可以是本地文件路徑萨螺、代碼包文件路徑或者網(wǎng)絡(luò)圖片路徑窄做,支持PNG及JPG,不傳入 imageUrl 則使用默認(rèn)截圖慰技。顯示圖片長寬比是 5:4
    success: function (res) {
      // 轉(zhuǎn)發(fā)成功之后的回調(diào)
      if (res.errMsg === 'shareAppMessage:ok') {
        console.log('分享成功')
      }
    },
    fail: function (res) {
      // 轉(zhuǎn)發(fā)失敗之后的回調(diào)
      if (res.errMsg === 'shareAppMessage:fail cancel') {
        // 用戶取消轉(zhuǎn)發(fā)
      } else if (res.errMsg === 'shareAppMessage:fail') {
        // 轉(zhuǎn)發(fā)失敗椭盏,其中 detail message 為詳細(xì)失敗信息
      }
    },
    complete: function () {
      // 轉(zhuǎn)發(fā)結(jié)束之后的回調(diào)(轉(zhuǎn)發(fā)成不成功都會執(zhí)行)
    }
  }
  // 來自頁面內(nèi)的按鈕的轉(zhuǎn)發(fā)
  // if (options.from === 'button') {
  //   var eData = options.target.dataset
  //   console.log(eData.name) // shareBtn
  //   // 此處可以修改 shareObj 中的內(nèi)容
  //   shareObj.path = '/pages/btnname/btnname?btn_name=' + eData.name
  // }
  // 返回shareObj
  return shareObj
}

export default {
  sharehanle
}

微信自帶loading,提示和彈窗API

1. loading
顯示
wx.showLoading({
    title: '圖片保存中...'
})
隱藏
wx.hideLoading()
2. Modal
wx.showModal({
    title: '提示',
    content: '獲取權(quán)限成功,再次點(diǎn)擊按鈕即可保存',
    showCancel: false
    })
3.Toast
wx.showToast({
  title: '提交成功',
  icon: 'succes',
  duration: 1000,
  mask: true
})

統(tǒng)計

官方文檔

會用到的應(yīng)該是自定義分析吻商,也就是按鈕點(diǎn)擊等事件的統(tǒng)計掏颊。


其他

  • background-image只能用網(wǎng)絡(luò)url或者base64.本地圖片要用image標(biāo)簽才行。
  • 小程序里有視頻播放艾帐,審核的時候會有資質(zhì)問題乌叶,需使用封裝的視頻插件

  • 后臺發(fā)送的模板消息,需要前端提交數(shù)據(jù)時柒爸,提供formId准浴。詳見小程序form組件

  • mpvue 事件的參數(shù)通過綁定是用$event傳入
    以swiper舉例

  <swiper class="sub_swiper"
    :indicator-dots="indicatorDots"
    :autoplay="autoplay"
    :interval="interval"
    :duration="duration"
    :previous-margin="previousMargin"
    :next-margin="nextMargin"
    :current ="curMovieIndex"
    <!--傳入事件參數(shù)-->
    @change="handleChange($event)">
      <block v-for="(item, index) in datalist" :key="index">
          <swiper-item>
            <div class="item" :class="{'active_item': curMovieIndex === index }" :animation="index == curMovieIndex ? animationData : animationData2">
              <image class="img" :src="item.coverImg"></image>
            </div>
          </swiper-item>
      </block>
  </swiper>
    handleChange (e) {
     // 這里獲取參數(shù)
      let oIndex = e.mp.detail.current
      // 修改swiper展示index
      store.commit('setCurMovieIndex', oIndex)
      this.changeActive()
      this.changeNormal()
    },
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市捎稚,隨后出現(xiàn)的幾起案子乐横,更是在濱河造成了極大的恐慌,老刑警劉巖今野,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件葡公,死亡現(xiàn)場離奇詭異,居然都是意外死亡条霜,警方通過查閱死者的電腦和手機(jī)催什,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宰睡,“玉大人蛆楞,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵俺附,是天一觀的道長萎庭。 經(jīng)常有香客問我,道長光稼,這世上最難降的妖魔是什么或南? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮艾君,結(jié)果婚禮上采够,老公的妹妹穿的比我還像新娘。我一直安慰自己冰垄,他們只是感情好蹬癌,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般逝薪。 火紅的嫁衣襯著肌膚如雪隅要。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天董济,我揣著相機(jī)與錄音步清,去河邊找鬼。 笑死虏肾,一個胖子當(dāng)著我的面吹牛廓啊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播封豪,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼谴轮,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了撑毛?” 一聲冷哼從身側(cè)響起书聚,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎藻雌,沒想到半個月后雌续,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡胯杭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年驯杜,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片做个。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡鸽心,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出居暖,到底是詐尸還是另有隱情顽频,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布太闺,位于F島的核電站糯景,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏省骂。R本人自食惡果不足惜蟀淮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望钞澳。 院中可真熱鬧怠惶,春花似錦、人聲如沸轧粟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至览妖,卻和暖如春轧拄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背讽膏。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工檩电, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人府树。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓俐末,卻偏偏與公主長得像,于是被迫代替她去往敵國和親奄侠。 傳聞我的和親對象是個殘疾皇子卓箫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355