目前有一个非常大的微信小程序应用。 使用uni-app开发新功能是否可行? 有什么优点和缺点?
首先看官方的解决方案
方法一:将原生小程序转换为uni-app源码。有各种转换工具,参见
方法二:新建一个uni-app项目,将原生小程序代码转为小程序组件,然后集成到uni-app项目中。 uni-app支持使用小程序wxml组件,请参考
方法三:仍然保留原生开发的小程序,使用uni-app开发一些新功能。
我们选择第三种方案,保留原生小程序,使用uni-app开发新功能。
我们先新建一个原生小程序demo
创建成功后目录如下
写下来并创建 uni-app 项目。 这里我们通过vue-cli来创建。
// 安装vue-cli npm install -g @vue/cli // 创建uni-app创建,选择默认模版 vue create -p dcloudio/uni-preset-vue uniapp-project
创建成功后目录如下
接下来我们打包一个子应用
npm run build:mp-weixin -- --subpackage=sub_uniapp // 或者 yarn build:mp-weixin --subpackage=sub_uniapp
注意,我们将dist//mp-/下的文件夹复制到原生小程序的根目录下。
然后在app.json文件中添加对应的页面路径
接下来我们访问这个页面
发现图片没有显示
我们需要进入uni-app项目,将页面上的图片路径从绝对路径更改为相对路径。
然后重新打包,复制到小程序,再次访问页面
到这里基本的功能已经实现了。
有一些问题需要注意:
uni-app中的app.vue生命周期不会被触发。 转包时,第一次进入转包时会触发一次。 如果需要依赖uni-app中原生小程序中的方法,实现起来比较困难。 管理项目时增加了项目复杂性。