美文网首页mpvue程序员
mpvue写小程序初体验

mpvue写小程序初体验

作者: 小灯灯学佛 | 来源:发表于2019-02-27 14:26 被阅读7次

    写在前面

    其实在简书上记录一些心情、分享一些技术已经很久了,但半年前不知为何我的简书账号被封了,所有文章也就跟着消失了,不过无所谓,世事无常嘛!今天开始就继续和有缘人一起分享一些所得。

    为什么是mpvue

    使用小程序原生语言写小程序也有一年多了,最初涉及的都是些小规模项目,但随着项目日益扩大,原生小程序带来的问题越来越多

    1.编写每个页面都需要来回切换3个文件
    2.小程序官方编辑器经常卡死、空白、各种bug
    3.引用的第三方组件更新迭代混乱
    4.小程序本身语法局限,很多时髦功能不支持
    5.和h5几乎没有任何关系,转成h5几乎不可能

    因此我开始考虑采用其他流行框架,查一查主要就是wepy和mpvue了,之所以选用mpvue,第一是最近自己正好在研究vue,第二是mpvue生态圈相对成熟一些。

    使用体验

    编辑器自然是万年最爱的Sublimetext 3 ,装一些vue高亮插件、html排版插件即可


    sublime

    由于不熟悉这个框架,我并没有从0新建项目,而是从github中选择了一个最简单的案例clone了下来,然后删掉它的pages,开始写自己的page
    随机就遇到一些问题,由于小程序和vue接口存在大量区别,导致原本很多方法无法使用。
    最后查了半天采用如下方案:

    flyio作为网络请求库
    自己写了个global来简单替代小程序globaldata,下方会给出代码
    ui框架采用vant小程序版 Github地址 该框架mpvue完全支持

    比较坑爹的是小程序开发工具会随着每次保存刷新,因此经常保存几个文件刷新好几遍,尽量一次性保存全部:command+option+s
    Vue体验最好的还是组件化,虽然小程序本身也支持组件化,但是体验还是有差距,但是“瑜不掩瑕”,mpvue还不算成熟,还有很多坑,官方已经声明了一些,如:不支持复杂js表达式、不支持filter,除此之外,个人在开发过程中还遇到一些问题:

    页面缓存问题

    同一页面多次加载的时候会残留上一次数据,即页面不会destroy,这个问题非常验证,github上已经有无数讨论,目前我采用手动清空数据的方法,勉强解决,方法就是在每个页面加入如下代码(比较蠢,也可以采用github上某位大神写的框架,但由于版本差异我没敢用)

    const dataArr = []
    export default {
      onLoad() {
        Object.assign(this.$data, this.$options.data())
        dataArr.push({ ...this.$data })
      },
      onUnload() {
        dataArr.pop()
        const dataNum = dataArr.length
        if (!dataNum) return
        Object.assign(this.$data, dataArr[dataNum - 1])
      },
    }
    
    上面提到的globaldata问题

    当然可以用vuex做,只是我不是很熟悉这个,也不想搞那么费劲,毕竟我只想储存下用户信息
    在utils文件夹中新建和一个js


    global.js

    再在main.js中增加两句代码


    main.js
    这样,在任意一个页面都可以用
    this.$global.token //访问和修改这些全局的值了
    

    总结

    项目顺利完成,vant的组件效果还不错。mpvue除了页面切换这个大坑外,其余体验还算不错,后续会继续采用,期待框架作者早日更新。


    效果图

    相关文章

      网友评论

        本文标题:mpvue写小程序初体验

        本文链接:https://www.haomeiwen.com/subject/ivaxuqtx.html