uniapp开发h5打包为小程序方案落地
方案一 使用webview
优点:
- 更新h5直接更新了小程序,直接将整个地址嵌入到h5中,h5更新,小程序也更新,不需要每次发布新版本进行微信得发布审核。
- 改动代码较小,直接新创建得项目将url添加进来。
缺点:
- 小程序有个快捷登录,可以快速调用微信绑定手机号进行登录,如果直接把整个h5嵌入这个快捷登录就需要单独做处理,小程序间和h5页面需要进行通信,即h5跳转登录得时候要通知微信小程序跳转到小程序得快捷登录页面,使用完快捷登录后还需要将这个身份信息通过url传递给h5,同时小程序还有扫码跳转页面和扫码签到都需要这样通信处理,比较麻烦。
- 最重要的缺点就是我们需要使用微信小程序得模板通知,这样嵌入得方式是实现不了得,无法进行消息的订阅。
落地方案 一套代码分别打包为两种形式
优点:
- h5和小程序快捷登录和消息订阅可以单独处理,不需要进行过多的通信。
- 只需要维护一套代码。
缺点:
- 代码比较冗余,在一套代码中要完成h5和小程序的适配(返回方式).
- 还是需要更新代码后打包成两种形式
总结
综上所述,虽然方案二有缺点,但是核心需求还是都可以实现,最终选择了方案二作为最终方案,维护一份代码,打包运行在两个平台。
小程序分包
优点
- 页面加载速度更快,提高首次加载速度,初次加载只加载主包,然后分包进行预加载,用户体验变得更好。
- 小程序发布限制为2M,超过2M无法发布,分包后可以不受这个限制
流程
- 分析项目的目录结构,根据各个包的依赖关系进行分包,tabbar页面和启动页面需要在主包中,分包A不能引入分包B的资源但是可以引入主包资源。
- 在uniapp应用配置(manifest.json)中,配置开启分包优化(原生小程序中不需要这一步)
"optinazation":{"subPackages":true}
- pages.json中配置主包和分包路径
{
"pages":[
"pages/index",
"pages/logs"
],
"subpackages": [
{
"root": "packageA",
"name": "宠物模块",
"pages": [
"pages/cat",
"pages/dog"
]
}, {
"root": "packageB",
"name": "水果模块",
"pages": [
"pages/apple",
"pages/banana"
]
}
]
}
4.根据配置路径,主包和分包会进行分开打包。
- 打包完毕后,添加增加
preloadRule配置来控制分包预加载,可以在某个页面的时候提前下载分包,使页面跳转更加流畅。
"preloadRule": {
"pages/index": {
"packages": ["packageA",packageB]
}
}