杨大宝
杨大宝
  • 发布:2018-09-13 10:31
  • 更新:2019-09-02 22:02
  • 阅读:29740

小程序转uni-app、小程序移植uniapp经验分享~

分类:uni-app

小程序发展这么久不得不说生态做的还是非常不错的,毕竟微信用户量在那放着。
大家都知道uniapp是采用小程序标准的,包括组件和api。不同的地方就是uniAPP采用了我们更加喜欢的vue。
所以,大部分小程序的插件uniapp都是可以使用的,只不过需要进行简单的处理。
好了少啰嗦,接下来分享下我移植小程序插件的经验及步骤。

1、.wxml 拷贝内容放在 .vue文件的 template标签下
2、修改基础语法,搜索 wx: 替换为 v-,搜索 bind 替换为 @,style、class、属性绑定方面有差别...具体就不细讲了,可以看看文档,很简单
3、.wxss 拷贝内容放在 .vue文件的 style 标签下,无需修改
4、.js onLoad、onShow等生命周期函数完全兼容,小程序的自定义函数要放在methods对象下
5、搜索 wx. 替换为 uni.,搜索 this.data 替换为 this 或者 数据对象按照以下写法:

data:{  
    data:{  
       key:val   
   }  
}

如果数据对象按照以上写法,以下请自行做出相应改动。
在逻辑层出来的时候个人认为比较费劲的就是小程序的setData了,以下是我的解决方案,完全兼容小程序,支持附点子元素赋值操作:

setData:function(obj){  
    let that = this;  
    let keys = [];  
    let val,data;  
    Object.keys(obj).forEach(function(key){  
         keys = key.split('.');  
         val = obj[key];  
         data = that.$data;  
         keys.forEach(function(key2,index){  
             if(index+1 == keys.length){  
                 that.$set(data,key2,val);  
             }else{  
                 if(!data[key2]){  
                    that.$set(data,key2,{});  
                 }  
             }  
             data = data[key2];  
         })  
    });  
}

6、api基本一致,具体请参考文档
至此基本上就OK了,总结的不够全面请大家多多指教。
以此文简单分享一下希望可以有用,也希望大家可以一起完善uniapp生态。
以下是我的一些功能,插件链接,望大家多多支持。
1、uniapp图片裁剪插件
2、swiper + scroll-view 实现下拉刷新
3、单击back隐藏到后台
4、【插件、图表】7种图表漂亮丰富

16 关注 分享
Trust Neil_HL 钟文 周华飞 DCloud_heavensoft Geeker 3***@qq.com w***@163.com wuguangyong 秋天无风 3***@qq.com 2***@qq.com sonicsunsky c***@163.com 睡不醒哎 世博

该文章目前已经被锁定, 无法添加新评论

颓废市民小高

颓废市民小高

回复 道法O自然 :
同,解决了吗
2019-01-29 15:17
颓废市民小高

颓废市民小高

wx.getLocation 怎么解决
2019-01-29 13:52
颓废市民小高

颓废市民小高

uni.openSetting is not a function 不支持5+APP有啥方案解决吗,官方文档没看到
2019-01-29 11:42
颓废市民小高

颓废市民小高

回复 DCloud_heavensoft :
plus.runtime. 是啥呀 还要小程序可以在一个view上写2个wx:if 这个好像只支持一个v-if this.setData咋解决是添加在main.js 里面 Vue.prototype.setData = setData(); 为什么提示keys null
2019-01-28 15:57
DCloud_heavensoft

DCloud_heavensoft

回复 颓废市民小高 :
http://ask.dcloud.net.cn/article/34972
2019-01-28 13:03
颓废市民小高

颓废市民小高

回复 DCloud_heavensoft :
那uni-app控制app版本要不要更新咋写
2019-01-28 09:42
DCloud_heavensoft

DCloud_heavensoft

回复 颓废市民小高 :
这个是微信专用方法,不跨端,所以uni里没有,这种仍然是wx.getUpdateManager
2019-01-26 17:55
颓废市民小高

颓废市民小高

errorHandler TypeError: uni.getUpdateManager is not a function
提示没有uni.getUpdateManager 这个方法咋解决
2019-01-26 17:22
道法O自然

道法O自然

that.$set 找不到此函数。
2019-01-15 12:38
bos

bos

小程序的app(),getApp()怎么转到uni?
2018-12-26 18:10