前提: 本文适合有Taro和小程序混合开发经验的人阅读(ps不然会一脸懵逼)
本文采用taro3.4.11和原生小程序混合开发,把 Taro项目作为一个完整分包,塞进原生小程序中,Taro文档中的案例写的很清楚,随着业务推进,taro项目越来越大,作为主项目的分包已经远远超过2m,两个思路:
第一个思路针对紧急需求,优化的方案也很多,这里不多赘述。今天分享的拆分到多个分包的思考以及实现过程。
翻阅着Taro文档,看到混合开发下面还有几行小字: “把Taro 项目拆分到多个分包假设有一个 Taro 项目,它含有页面 A 和页面 B。我们需要把页面 A加入原生项目的其中一个分包M,把页面 B 加入到另一个分包 N。”
就像找到了救星一样,但是定睛一看,案例呢??只有短短一句:
“分别对 A、B页面使用混合模式打包,步骤和把 Taro 项目作为一个完整分包一致。”
外加一个注意点:
“需要配置 Webpack 的 output.jsonpFunction 配置,避免 chunkid的冲突。”
貌似说了啥貌似也没说啥,不过可以确定的是拆分到多个分包这个方案是可以实现的。接着拆分任务:
一遍一遍翻着文档,搜索整个互联网最后得出一个结论,taro3.4.11压根不存在打包一部分页面的命令!放弃这个思路,直接转向打包的过程分析。
仔细翻找文档并未出现修改入口文件位置的配置,这时候只能深入源码去寻找加载入口文件的方法,最终锁定位置:
由于我们打包的是小程序,所以会加载 MiniPlugin 这个插件,其中方法 getAppEntry 可以清楚看到入口文件文件路径是从webpack配置的entry中的app这个属性中拿到的。
// package.json
"scripts": {
"pack-main": "taro build --type weapp --env main --blended"
}
// package.json
"scripts": {
"pack-main": "taro build --type weapp --env main --blended",
"pack-sub": "taro build --type weapp --env sub --blended"
}
// package.json
"scripts": {
"pack-main": "taro build --type weapp --env main --blended",
"pack-sub": "taro build --type weapp --env sub --blended",
"pack-all": "yarn run pack-main && yarn run pack-sub"
}
以上,单独打包一个页面完成
执行完成上面的操作到小程序一看全是红色的报错,那一定时遇到chunkid冲突的问题。
经过九九八十一难最终顺利完成任务,实现Taro 项目拆分到多个分包。
本次探索是毕业入职以来由理论迈向实践第一步,相信还会有第二步、第三步。
拆分完成后当然会有很多后续的惊喜等着我们,比如:状态管理不能共享 and so on …
留一些思考,下一篇再说吧!