mpvue小程序以及微信直播踩坑总结

前段时间刚写完一个mpvue的小程序,现在得闲必须赶紧记录和总结一下,不然很多东西又要忘了

我是比较熟悉vue的语法,但是也犹豫过是用原生还是用mpvue,因为那时候原生小程序已经相当成熟而mpvue才刚出来(踩坑和填坑的前人还很少)

所以我学习了几天原生的框架和语法,果断选择了mpvue,真的是没有对比就没有伤害,对比原生体验不要太好

mpvue是一个使用 Vue.js 开发小程序的前端框架,他是将我们写的vue文件重新编译成wxml等文件,最后的底层实现还是用的小程序语法,所以原生小程序语法也是比较重要的,而且像很多下拉刷新,到底部请求下一页什么的等等很多地方也是要用到小程序api的,所以建议大家在入坑之前还是了解一些小程序语法比较好

附上官方文档http://mpvue.com/#_1

项目配置

使用官方的5分钟上手,生成一个基本框架,后来开发也没有手动修改过他的配置

用到了4个插件

mpvue-weui ui库,相当方便轻量好使

官网地址:http://kuangpf.com/mpvue-weui/#/

mpvue-toast 一个基于mpvue的简单弹窗组件

因为mpvue目前还不支持全局的组件,所以没有办法像vue组件引入一次就能在所有页面使用,但是mpvue团队已经在考虑新增全局组件功能了

github地址:https://github.com/linrui1994/mpvue-toast

sass 不多介绍

全局安装:npm install sass-loader node-sass --save-dev

在style节点加上lang=”scss”,这样就可以愉快地使用sass进行开发了

mpvue-router-patch 在mpvue 中使用 vue-router 兼容的路由写法

当知道mpvue不支持vue-router的时候我还是非常难受,还好mpvue团队后面发布了这个插件,非常简单好用

github地址:https://github.com/F-loat/mpvue-router-patch

<u>接下来的3个插件我没有用过但是和mpvue-router-patch一样是mpvue团队发布的,感觉应该也不差,也推荐给大家如果需要可以花时间了解一下</u>

mpvue-echarts 适用于 Mpvue 的 ECharts 组件

github地址:https://github.com/F-loat/mpvue-echarts

微信小程序富文本解析组件 适用于 Mpvue 的微信小程序富文本解析自定义组件

github地址:https://github.com/F-loat/mpvue-wxParse

mpvue-entry自动生成各页面的入口文件 集中式页面配置,自动生成各页面的入口文件,优化目录结构,支持新增页面热更新

github地址:https://github.com/F-loat/mpvue-entry

ajax请求封装拿走不谢

let urlPath = '' // 项目的域名
export function post(url, data) {
  wx.showLoading({
    title: '努力加载中',
  })
// 由于微信不会保存后端用于登陆验证的cookie,这里需要自己从登陆返回的数据里取到cookie,然后本地缓存,请求时在header里带上cookie
  let header = {} 
  url === 'user/loginworker' // 通过传进来的url判断是否是登陆页
    ? header = {} 
    : header = {
      'content-type': 'application/x-www-form-urlencoded',
      'cookie': wx.getStorageSync("sessionid")
    } 
  return new Promise((resolve, reject) => {
    wx.request({
      url: urlPath + url,
      data: data,
      method: 'get',
      header: header, success(res) {
        console.log(res)
        if (res.statusCode === 200) {
          if (res.data === 9999) { // 与后端的后端返回9999表示cookie失效
            wx.showModal({
              content: '登陆超时请重新登陆',
              showCancel: false,
              success: function (res) {
                if (res.confirm) {
                  wx.navigateTo({
                    url: '../../pages/login/main',
                  })
                }
              }
            })
          } else if (res.data.code && res.data.code !== 200) { // 若返回coode码且不等于200表示传入参数有问题
            res.message = res.data.message, reject(res)
          } else resolve(res)
            // 存储cookie
          res.data.message === '登录成功。' ? wx.setStorageSync("sessionid", res.header["Set-Cookie"]) : ""
        }else {
          res.message = '服务器错误请求失败'
          reject(res)
        }
        wx.hideLoading()
      }, fail(err) {
        err.message = '请求超时请稍后再试'
        reject (err)
        wx.hideLoading()
      }
    })
  })
}
image.gif

生命周期钩子

created是vue的生命周期在mpvue里所有页面的created函数会在项目加载的时候被一起调用,可用性不大,可以使用onShow()代替,但是onShow()只有在隐藏又显示后才会显示,也就是第一次加载不会执行

 created() {
    console.log('created')
  },
  mounted() {
    console.log('mounted')
  },
  onLoad() {
    console.log('onLoad')
  },
  onShow() {
    console.log('onShow')
  },
  onUnload() {
    console.log('onUnload')
  },
  onHide() {
    console.log('onHide')
  },
image.gif

页面跳转后并没有销毁页面实例

比如一个搜索页面,页面第一次进来所有的数据都是空的,但你搜索一次之后,input框就有值了,这个时候再跳转到其他页面或者返回之后再进入这个页面那个值依然存在,页面跳转后并没有销毁页面实例,而是将其推入页面栈中,所以会保存之前的旧的数据,目前为止看到的比较统一的解决办法就是:在onShow()或者onLoad()手动清空

关于微信直播

这个小程序需要引入监控相当于是直播功能,这个组件也是有点坑

Live-player组件本身只能播放,如果想要在组件上加功能,像什么全屏静音播放暂停之类的功能需要使用wx.createLivePlayerContext()方法,而且由于live-player层级是最高的,如果你需要在组件上加功能比如点一下全屏再点下退出全屏或者加css样式,你必须写在 cover-view cover-image上面,直接加在live-player上是没用的

<live-player id='liveInfo' src="" mode="live" autoplay='false' @bindstatechange="statechange" binderror="error">
    <cover-image @click="requestFullScreen"></cover-image>
</live-player>
image.gif

你以为这样就完了嘛,不,如果你有一个直播列表,比如一个屏幕同时有一个以上的live-player组件那么你全屏的时候就会发现其余的组件因为层级的原因全部覆盖在你全屏的那个组件之上

解决办法:全屏是v-if隐藏其余的组件,退出时再显示

欢迎留言交流 (´▽`ʃ♡ƪ)**

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,761评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,953评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,998评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,248评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,130评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,145评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,550评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,236评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,510评论 1 291
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,601评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,376评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,247评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,613评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,911评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,191评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,532评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,739评论 2 335

推荐阅读更多精彩内容