微信小程序转uniapp的迁移步骤及遇到的问题_微信小程序转uniapp
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
目录
第四步使用hbuilder X运行转换后的项目并在微信小程序编辑器查看
前言
背景由于历史原因公司有个历史项目使用vue开发的公众号H5原生开发的微信小程序。两端功能的完全一样但是需要维护两个项目最近客户提了需求需要修改部分功能博主接到需求后觉得维护两套代码不仅是重复开发测试起来也麻烦因为之前是两个人开发不同端的缘故导致大部分的bug都是因为两端不一致产生的。为了节省时间和维护成本提升开发测试效率在反复对比调研最终选择了uniapp技术框架融合两端进行重构。博主目前正在使用uniapp开发H5和小程序这篇文章是和大家分享并记录一下原生小程序在迁移到uniapp的步骤和时遇到的问题。
一、迁移步骤
把微信小程序转成uni-app这里推荐一款【miniprogram-to-uniapp】小程序转换工具插件
第一步安装miniprogram-to-uniapp 插件
在命令行里运行【 npm install miniprogram-to-uniapp -g 】进行安装因为这个包是工具要求全局都能使用所以需要-g进行全局安装。
如果运行npm报错请先安装Node.js下载地址https://nodejs.org/zh-cn/
npm install miniprogram-to-uniapp -g
第二步查看是否安装成功
继续在命令行里运行【 wtu -V 】执行结果如下
显示版本号说明已经安装成功了
第三步使用插件进行转换
在命令行里输入【wtu -i "你的小程序项目路径"】
注意 -i 前面和后面都有空格
注意 -i 前面和后面都有空格
注意 -i 前面和后面都有空格
如【wtu -i "E:\zpWork\Project_self\miniprogram-to-uniapp\test\test-wx-to-uni"】 回车后即可以在源项目同及目录得到一个后缀为_uni的目录即转换成功。
转换前
转换后
转换后的项目文件对比左边是小程序项目右边是Uni-app项目目录
第四步使用hbuilder X运行转换后的项目并在微信小程序编辑器查看
将转换后的xxx_uni项目导入到hbuilder X
点击菜单 运行--> 运行到小程序模拟器-->微信开发者工具如果是使用了vant的项目请运行到H5vant项目转换后仅支持H5和app
然后查看转换后的项目运行到小程序是否可以正常运行无报错
第五步调试修改
运行项目在小程序开发者工具调试迁移页面的报错信息
二、处理迁移问题
根据下方迁移内容逐一更新页面方法修复页面报错信息页面显示、功能运行正常即迁移完成。
js部分
1删除 const app = getApp();
2以 wx. 开头的方法更新为 uni. 开头
3数据绑定 this.setData({ a : 1 }) 更新为 this.a = 1
4路由跳转 wx.navigateTo() 更新为uni.navigateTo()
5onLoadoptions
-
通过options或this.$Route.query获取页面传递参数
6、部分页面生命周期释义详见页面生命周期
-
onPullDownRefresh监听用户下拉动作一般用于下拉刷新
-
onReachBottom页面滚动到底部的事件不是scroll-view滚到底常用于下拉下一页数据
-
onShareAppMessage用户点击右上角分享
-
onPageScroll监听页面滚动
templete
以下几条不影响使用改不改都行
-
<block>标签可能是小程序<block>标签或templete模版转换生成的有的页面转完后可能有多层<block>嵌套的情况不影响使用但是不代码太美观修改的话<block> 标签替换为 <templete> 标签样式估计也需要调整
-
页面事件 例如 <view @tap="clickBtn" data-id="id">点击</view> ,页面转换完使用没问题但是和平常开发vue不一样更新的话可以改为<view @click="clickBtn(id)"> 在修改对应方法即可
-
引入wxs的页面 <script module="utils" lang="wxs" src="./utils.wxs"></script> 大部分方法可改为 computed、watch
css部分
-
css转换可能失败大部分是单位转换失败原px乘2改为rpx即可
-
盒子模型的问题小程序默认content-box,uniapp默认样式border-box修改box-sizing即可
三、扩展
习惯vue写法来处理router路由的同学还可以集成一个uni-simple-router插件来管理路由。
1、使用vue-cli 创建一个新的项目,使用uni-simple-router管理路由。
vue create -p dcloudio/uni-preset-vue xcxToUniapp
2、 打开该项目新建页面copy转换后的项目的代码
3、运行项目即可
总结
这篇文章记录了博主用使用uniapp集成H5和小程序两端的一些思路和解决方案。虽然很曲折但还是很开心故记录一下。希望这个记录能帮到看到这篇文章的小伙伴。