项目记录

90 阅读3分钟

uniapp开发h5打包为小程序方案落地

方案一 使用webview

优点:

  1. 更新h5直接更新了小程序,直接将整个地址嵌入到h5中,h5更新,小程序也更新,不需要每次发布新版本进行微信得发布审核。
  2. 改动代码较小,直接新创建得项目将url添加进来。

缺点:

  1. 小程序有个快捷登录,可以快速调用微信绑定手机号进行登录,如果直接把整个h5嵌入这个快捷登录就需要单独做处理,小程序间和h5页面需要进行通信,即h5跳转登录得时候要通知微信小程序跳转到小程序得快捷登录页面,使用完快捷登录后还需要将这个身份信息通过url传递给h5,同时小程序还有扫码跳转页面和扫码签到都需要这样通信处理,比较麻烦。
  2. 最重要的缺点就是我们需要使用微信小程序得模板通知,这样嵌入得方式是实现不了得,无法进行消息的订阅。

落地方案 一套代码分别打包为两种形式

优点:

  1. h5和小程序快捷登录和消息订阅可以单独处理,不需要进行过多的通信。
  2. 只需要维护一套代码。

缺点:

  1. 代码比较冗余,在一套代码中要完成h5和小程序的适配(返回方式).
  2. 还是需要更新代码后打包成两种形式

总结

综上所述,虽然方案二有缺点,但是核心需求还是都可以实现,最终选择了方案二作为最终方案,维护一份代码,打包运行在两个平台。

小程序分包

优点

  1. 页面加载速度更快,提高首次加载速度,初次加载只加载主包,然后分包进行预加载,用户体验变得更好。
  2. 小程序发布限制为2M,超过2M无法发布,分包后可以不受这个限制

流程

  1. 分析项目的目录结构,根据各个包的依赖关系进行分包,tabbar页面和启动页面需要在主包中,分包A不能引入分包B的资源但是可以引入主包资源。
  2. 在uniapp应用配置(manifest.json)中,配置开启分包优化(原生小程序中不需要这一步)
  "optinazation":{"subPackages":true}
  1. 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.根据配置路径,主包和分包会进行分开打包。

  1. 打包完毕后,添加增加 preloadRule 配置来控制分包预加载,可以在某个页面的时候提前下载分包,使页面跳转更加流畅。
  "preloadRule": {
    "pages/index": {
      "packages": ["packageA",packageB]
    }
  }